2013-11-27 84 views
0
require(plyr) 

list <- list(a=c(1:3), 
      b=c(1:5), 
      c=c(1:8), 
      d=c(1:10)) 

llply(list,function(x)(subset(x,subset=(x>5)))) 

以上的回報:如何對列表進行子集化並移除空向量?

$a 
integer(0) 

$b 
integer(0) 

$c 
[1] 6 7 8 

$d 
[1] 6 7 8 9 10 

如何只用現有的值返回一個列表,在這裏$ C $和d?

回答

0

你真的不應該叫一個列表變量 「列表」,因爲它是一個函數名。如果它稱爲L,那麼:

L[lapply(L,length)>0] 

這應該給一個非空列表

1

你不需要plyr此:

out <- lapply(list, function(x) x[ x > 5 ]) 
out[ sapply(out, length) > 0 ] 

結果:

$c 
[1] 6 7 8 

$d 
[1] 6 7 8 9 10 
+1

按理說不使用'subset'要麼...'lapply(列表,函數(X)×X> 5) ' –

+0

@ SimonO101是的,絕對。 – Thomas

相關問題