我知道列表中的空值有时可能会使人们困惑。我想知道为什么在特定情况下,lapply
和rapply
似乎会以不同的方式处理NULL
值。
l <- list(a = 1, c = NULL, d = 3)
lapply(l,is.null)
$a
[1] FALSE
$c
[1] TRUE
$d
[1] FALSE
到目前为止还不错。我们尝试使用rapply
做完全相同的事情会怎么样呢?
rapply(l, is.null, how = "replace")
$a
[1] FALSE
$c
list()
$d
[1] FALSE
这个例子非常简单且不涉及递归,但是您可以在嵌套列表中使用rapply
看到相同的行为。
我的问题是为什么?如果像?rapply
中所宣传的那样,它是lapply
的递归版本,为什么在这种情况下它们的行为会如此不同?
NULL
是一个空的pairlist
。所以你的意思是说rapply
不能(或不会)区分NULL
和pairlist()
。 - joranidentical(pairlist(), NULL)
:) 的意思是完全相同的(pairlist()和NULL)。 :) - Owen