2014-05-21 1 views
7

데이터 프레임 목록이 있고 일부는 비어 있는데 어떻게 제거 할 수 있습니까?목록에서 비어있는 길이가 0 인 행을 제거합니다. 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 
관련 문제