2014-05-21 15 views
7

Ich habe eine Liste von Datenrahmen und einige sind leer, wie kann ich diese entfernen?Entfernen leere leere Zeilen in der Liste mit R

$`S566X7221` 
[1] V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21 V22 V23 V24 V25 V26 
<0 rows> (or 0-length row.names) 

Ich habe diese versucht, aber nicht von ihnen arbeiten

x[lapply(x,length)>0] 
Filter(length, x) 

Antwort

12

Sie sind in der Nähe. Aber Sie wollen nrow, nicht length (das ist eigentlich die Anzahl der Spalten in einem data.frame).

x <- list(data.frame(A=numeric(),B=numeric()), data.frame(A=1:3, B=4:6), data.frame(A=1,B=2)) 
x[sapply(x, nrow)>0] 

Bevor:

> x 
[[1]] 
[1] A B 
<0 rows> (or 0-length row.names) 

[[2]] 
    A B 
1 1 4 
2 2 5 
3 3 6 

[[3]] 
    A B 
1 1 2 

Nach:

> x[sapply(x, nrow)>0] 
[[1]] 
    A B 
1 1 4 
2 2 5 
3 3 6 

[[2]] 
    A B 
1 1 2 
Verwandte Themen