mylist <- list(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
123, NULL, 456)
> mylist
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
[[4]]
NULL
[[5]]
NULL
[[6]]
NULL
[[7]]
NULL
[[8]]
NULL
[[9]]
NULL
[[10]]
NULL
[[11]]
[1] 123
[[12]]
NULL
[[13]]
[1] 456
我的列表有13个元素,其中11个是NULL。我想把它们删除,但保留非空元素的索引。
mylist2 = mylist[-which(sapply(mylist, is.null))]
> mylist2
[[1]]
[1] 123
[[2]]
[1] 456
这样可以很好地删除NULL元素,但我不希望非空元素被重新索引,即我希望mylist2
看起来像这样,其中非空条目的索引被保留。
> mylist2
[[11]]
[1] 123
[[13]]
[1] 456
names(mylist)
。所以它们只是帮助显示元素在列表中的位置。这就是为什么您很难告诉R返回仅具有两个元素的列表的第11个位置。您可以尝试将列表命名为下面的答案。 - Pierre Llist %>% discard(is.null)
或者list %>% discard(~ length(.x) == 0)
。 - geotheory