2014-05-21 57 views
7

我有數據框的列表,有些是空的,我怎麼能刪除這些?刪除列表中的空零長度行與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) 

我嘗試了這些,但他們的工作不

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

回答

12

你靠近。但是你想要nrow,而不是length(這實際上是一個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] 

前:

> 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 

後:

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

[[2]] 
    A B 
1 1 2