从list-R中删除缺少所有元素值的行

时间:2016-04-03 16:46:26

标签: r

让我有一个列表(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

我想删除行中所有elemet(行与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执行此操作?我会很高兴任何帮助。非常感谢。

1 个答案:

答案 0 :(得分:2)

我们可以使用list循环lapply,在逻辑矩阵(rowSums)上获取!is.na(x[-1]),通过检查元素不相等来转换为逻辑向量为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