如何在R中提取列表中的非空元素?

use*_*363 5 r

我有很大的列表,但是一些元素(位置)是NULL,在那里没有任何意义.我想只提取我的列表中的一部分,这是非空的.这是我的努力,但我遇到了错误:

ind<-sapply(mylist, function() which(x)!=NULL)
list<-mylist[ind]

#Error in which(x) : argument to 'which' is not logical
Run Code Online (Sandbox Code Playgroud)

有人会帮我实现吗?

Ric*_*ven 6

您可以使用is.null此处的逻辑否定.这可以应用于列表vapply,并且我们可以返回非null元素[

(mylist <- list(1:5, NULL, letters[1:5]))
# [[1]]
# [1] 1 2 3 4 5

# [[2]]
# NULL

# [[3]]
# [1] "a" "b" "c" "d" "e"

mylist[vapply(mylist, Negate(is.null), NA)]
# [[1]]
# [1] 1 2 3 4 5

# [[2]]
# [1] "a" "b" "c" "d" "e"
Run Code Online (Sandbox Code Playgroud)