2016-04-03 79 views
1

讓我有一個列表(list1),其中包含數據幀(df1,df2,..dfn),其中每個數據幀具有不同的列數。刪除所有元素缺失的列R中的值

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 

我想刪除行,其中中行的所有elemetns(除INDX行)是NA。

所以輸出中應爲(列表2)

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?我會很高興有任何幫助。非常感謝。

回答

2

我們可以循環通過listlapply,得到的邏輯矩陣(!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