Удалить нули из нескольких списков в списке

У меня есть большой список (A) списков SpatialPolygonsDataFrames. Некоторые из списков имеют нулевые значения (означает, что SpatialPolygonsDataFrame отсутствует). Я попытался :

A[!sapply(unlist(A, recursive=FALSE), is.null)]

Но безрезультатно, и тогда я попробовал:

A_nonulls=lapply(A, na.omit)

Каков правильный способ удалить нуль каждого списка в большом списке?

РЕДАКТИРОВАТЬ:

Я не могу сделать str(A), потому что A имеет 1000 списков и огромен. Первые элементы из первого списка выглядят так:

[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

[[4]]
NULL

[[5]]
class       : SpatialPolygons 
features    : 1 
extent      : 722951.5, 726848.9, 4325874, 4329654  (xmin, xmax, ymin, ymax)

Поэтому я хочу удалить нули и оставить только непустые элементы.


person geo_dd    schedule 11.12.2015    source источник
comment
Может A[!vapply(A,is.null,TRUE)]?   -  person nicola    schedule 11.12.2015
comment
Никола, я пробовал, но нули все еще в списках   -  person geo_dd    schedule 11.12.2015
comment
Попробуйте Filter(Negate(is.null), A)   -  person akrun    schedule 11.12.2015
comment
Вы должны быть более конкретными. Какие-то NULL ушли? Некоторые остались? У вас есть вложенные списки? С вашим конкретным примером моя линия (как и у @akrun) работает.   -  person nicola    schedule 11.12.2015
comment
@akrun спасибо, это работает для меня!   -  person geo_dd    schedule 11.12.2015
comment
@nicola по какой-то причине для меня A[!vapply(A,is.null,TRUE)] не работает. Я попробую еще раз, чтобы найти, почему.   -  person geo_dd    schedule 11.12.2015


Ответы (3)


Мы можем попробовать Filter

Filter(Negate(is.null), A) 
person akrun    schedule 11.12.2015

другой вариант, использующий потрясающий пакет Хэдли purrr:

library(purrr)
compact(A)
person Matthew Plourde    schedule 11.12.2015

ты можешь попробовать это

A[!sapply(A, is.null)]
person jogo    schedule 11.12.2015