2015-12-11 89 views
3

我有一个SpatialPolygonsDataFrame列表的大列表(A)。一些列表有空值(意味着没有SpatialPolygonsDataFrame)。我想:从列表中的多个列表中删除空值

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

,但没有结果,然后我想:

A_nonulls=lapply(A, na.omit) 

什么是去除每个列表的空的大名单的正确方法?

编辑:

我不能做STR(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) 

所以我想要删除空值,只保留不空的元素。

+1

也许'A [vapply(A ,is.null,TRUE)]'? – nicola

+0

尼古拉我试过了,但空值仍在列表中 –

+0

尝试'过滤(否定(is.null),A)' – akrun

回答

1

我们可以使用哈德利的了不起purrr包尝试Filter

Filter(Negate(is.null), A) 
1

你可以试试这个

A[!sapply(A, is.null)] 
2

另一种选择:

library(purrr) 
compact(A) 
+0

很好的包!我不知道,谢谢! –