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

时间:2015-10-17 10:22:47

标签: r

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

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行,我想要&#39;间隙&#39;为了填补,现在第12排将成为第11排。

我知道这是两个数据框的列表。因此,建议here不适用,因为dat[[11]]<-NULL将不执行任何操作,而dat[[2]]<-NULL会从列表中删除第二个数据框

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

1 个答案:

答案 0 :(得分:2)

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

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)