2016-04-03 34 views
1

Her bir veri çerçevesinin farklı sayıda sütun içerdiği veri çerçevelerini (df1, df2, ..dfn) içeren bir listeye (liste1) sahip olalım.Tüm öğelerin listeden eksik olduğu satırları silme R-R

list1[[1]] edelim:

df1: 

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

ve ben (indx satırda hariç) tüm satırları elemetns NA nerede satırları silmek istediğiniz

df2: 

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

.

Yani çıkışına (list2)

list2[[1]] olmalıdır:

df1: 

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

ve

df2: 

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

Nasıl bu kullanarak R yapabilirim? Herhangi bir yardım için çok memnun olacağım. Çok teşekkürler.

cevap

2

Biz dönebilir lapply ile list üzerinde, mantıksal matrisi (!is.na(x[-1])) üzerine rowSums elde elemanları kontrol mantıksal vektör dönüştürmek 0'a eşit değildir ve satırları alt kümesi için bu kullanın.

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 
İlgili konular