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]]<-NULL
什么都不做,而dat[[2]]<-NULL
将从列表中删除第二个数据框
lapply(dat,"[",11)
允许我访问相关元素,但我不知道如何删除它们。
【问题讨论】:
当我输入 typeof(dat) 时,它显示“列表”。上面的代码就是我所拥有的一切。我的环境中没有任何其他数据框。 dat[-11,] 删除了一行,但它留下了一个间隙,我们从 10 跳到 12。我需要一个删除行但不留间隙的过程。 是的,就是这样!也许我这个问题的标题不准确,因为当我写这个问题时,我误以为 dat 是一个列表。 我会检查str(dat)
以了解数据集的结构。如果是list
,str(list(dat, dat))
【参考方案1】:
假设我们想从data.frame
s 的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:如何从该列表中的所有数据框中删除行?的主要内容,如果未能解决你的问题,请参考以下文章