R:如何从该列表中的所有数据框中删除行?

Posted

技术标签:

【中文标题】R:如何从该列表中的所有数据框中删除行?【英文标题】:R: How can I remove rows from all the data frames in this list? 【发布时间】:2016-01-16 02:10:33 【问题描述】:

假设我有一些像这样创建的数据

n <- 3
K <- 4
dat <- expand.grid(var1=1:n, var2=1:K)

dat 看起来像这样:

    var1    var2
1     1      1
2     2      1
3     3      1
4     1      2
5     2      2
6     3      2 
7     1      3
8     2      3
9     3      3
10    1      4
11    2      4
12    3      4

我想同时从列表中的两个数据框中删除一些行。假设我要删除第 11 行,并希望填充“空白”,这样现在第 12 行将成为第 11 行。

我知道这是两个数据框的列表。因此here 的建议不适用,因为dat[[11]]&lt;-NULL 什么都不做,而dat[[2]]&lt;-NULL 将从列表中删除第二个数据框

lapply(dat,"[",11) 允许我访问相关元素,但我不知道如何删除它们。

【问题讨论】:

当我输入 typeof(dat) 时,它显示“列表”。上面的代码就是我所拥有的一切。我的环境中没有任何其他数据框。 dat[-11,] 删除了一行,但它留下了一个间隙,我们从 10 跳到 12。我需要一个删除行但不留间隙的过程。 是的,就是这样!也许我这个问题的标题不准确,因为当我写这个问题时,我误以为 dat 是一个列表。 我会检查str(dat) 以了解数据集的结构。如果是liststr(list(dat, dat)) 【参考方案1】:

假设我们想从data.frames 的list 中删除行,我们使用lapply 循环list 元素并使用数字索引删除行。

lapply(lst, function(x) x[-11,])

或者没有匿名函数

lapply(lst, `[`, -11,)

“dat”是data.frame

is.data.frame(dat)
#[1] TRUE

如果我们想从 'dat' 中删除行,

dat[-11,]

如果 row.names 也需要更改

`row.names<-`(dat[-11,], NULL)

数据

lst <- list(dat, dat)

【讨论】:

以上是关于R:如何从该列表中的所有数据框中删除行?的主要内容,如果未能解决你的问题,请参考以下文章

如何从熊猫数据框中的列中删除字符串值

如何根据 R 中的行标记数据框中的所有变量

如何删除数据框中的回车符

vba,如何从列表框中的工作表中删除过滤后的数据

基于具有列表值的多列删除数据框中的重复行[重复]

删除具有任意行数的数据框中的最后 N 行