【问题标题】:Deleting rows where all elements are missing value from list-R从list-R中删除所有元素都缺少值的行
【发布时间】:2016-04-04 00:53:52
【问题描述】:

让我有一个列表(list1),其中包含数据帧(df1,df2,..dfn),其中每个数据帧具有不同的列数。

list1[[1]]:

df1:

indx  v1  v2  
1     23  45
2     NA  34
3     NA  NA
4     NA  NA
5     56  NA

df2:

indx  v9  v6  
1     5   15
2     11  78
3     16  NA
4     NA  NA
5     NA  8

我想删除所有行的元素(除了 indx 行)都是 NA 的行。

所以输出应该是(list2)

list2[[1]]:

df1:

indx  v1  v2  
1     23  45
2     NA  34
5     56  NA

df2:

indx  v9  v6  
1     5   15
2     11  78
3     16  NA
5     NA  8

如何使用 R 来做到这一点?我会很高兴得到任何帮助。非常感谢。

【问题讨论】:

    标签: r


    【解决方案1】:

    我们可以用lapply循环list,得到逻辑矩阵(!is.na(x[-1]))上的rowSums,通过检查元素不等于0转换为逻辑向量,并用它来子集行。

    lapply(list1, function(x) x[!!rowSums(!is.na(x[-1])),])
    #$df1
    #  indx v1 v2
    #1    1 23 45
    #2    2 NA 34
    #5    5 56 NA
    
    #$df2
    #  indx v9 v6
    #1    1  5 15
    #2    2 11 78
    #3    3 16 NA
    #5    5 NA  8
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 2014-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      相关资源
      最近更新 更多