【问题标题】:Erasing specific rows of multiple dataframes within a list擦除列表中多个数据帧的特定行
【发布时间】:2011-08-10 15:01:11
【问题描述】:

假设我有这样一个列表,其中包括 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 列中值

我尝试使用任何 lapply:

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

【问题讨论】:

    标签: list r row dataframe erase


    【解决方案1】:

    明智地使用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
    

    【讨论】:

      【解决方案2】:

      这样的事情怎么样:

      lst <- lapply(lst, function(x) {subset(x, B >= 2)})
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多