根據手冊,Filter作品的載體,和它發生也工作在列表,例如:在R中,如何過濾列表列表?
z <- list(a=1, b=2, c=3)
Filter(function(i){
z[[i]] > 1
}, z)
$b
[1] 2
$c
[1] 3
但是,它並沒有在列表的列表,如:
z <- list(z1=list(a=1,b=2,c=3), z2=list(a=1,b=1,c=1), z3=list())
Filter(function(i){
if(length(z[[i]])>0){
if(z[[i]]$b > 1)
TRUE
else
FALSE
}
else
FALSE
}, z)
Error in z[[i]] : invalid subscript type 'list'
工作
然後過濾不使用嵌套循環列表的最佳方式是什麼?它也可能是列表的列表清單...
(我試圖與嵌套lapply的替代,但無法管理,使其工作。)
編輯:在第二個例子中,這裏是我想要的東西來獲得:
list(z1=list(a=1,b=2,c=3))
的是,毫無Z $ Z2因爲Z $ Z2 $ b < 1,沒有Z $ Z3,因爲它是空的。
你試過'rapply'嗎? – Iterator
@Iterator:是的,謝謝,但我沒有設法獲得我想要的輸出(看我的編輯) – tflutre
奇怪的是:別人在這裏發佈了一個答案,現在它消失了。不過,我不知道它解決了什麼問題。 – Iterator