Согласно руководству, Фильтр работает с векторами, и он также работает со списками, например:
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