list - 删除列表中多个数据帧的特定行

标签 list r row dataframe erase

假设我有这样一个列表,其中包含 3 个名为 1、3 和 4 的数据帧:

        1                   3           4  
1   A   c(2, 1, 3, 1, 2)    c(1, 1, 2)  c(1, 1)
2   B   c(1, 1, 1, 3, 2)    c(2, 1, 2)  c(2, 1)

如您所见,数据框具有相同的列(A 和 B),但行数不同。如何删除列表中所有数据帧 B 列中值 < 2 的行?

我尝试了 lapply 与任何:

list <- lapply(list, function(x) {x <- any(x[,c(2)] < 2);x})

最佳答案

明智地使用lapply()和简单的子集设置与任何方法一样好。在 l 中使用您的数据:

l <- list("1" = data.frame(A = c(2, 1, 3, 1, 2), B = c(1, 1, 1, 3, 2)),
          "3" = data.frame(A = c(1,1,2), B = c(2,1,2)),
          "4" = data.frame(A = c(1,1), B = c(2,1)))

这就是你想要的

lapply(l, function(x) x[x$B >= 2,])

给予:

> lapply(l, function(x) x[x$B >= 2,])
$`1`
  A B
4 1 3
5 2 2

$`3`
  A B
1 1 2
3 2 2

$`4`
  A B
1 1 2

关于list - 删除列表中多个数据帧的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7012981/

相关文章:

java - 如何从列表中删除重复项?

python - 列出单独的值

list - Haskell,将列表的元素及其长度压缩

R:所有排列中的前 N ​​个

matlab - 将所有的 1 连续相加?

list - 每次通过冒泡排序时,我如何打印出列表的状态?

r - 如何使用 quantmod 在新图中叠加多个 TA?

R 允许 lapply 错误

mysql - 在特定的 mySQL 行中找到具有匹配值的列

html - Bootstrap row-eq-height 它不起作用