リストのNULL値が時々trip人になることがあります。特定のインスタンスでlapply
とrapply
がNULL
の値を異なる方法で扱うように見えるのはなぜかと私は不思議です。rapplyとlapplyはなぜ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の再帰的なバージョン'である場合、なぜこのように動作するのでしょうか?
+1「NULL」は空の 'pairlist'であることを指摘しています。だから、 'rapply'は' NULL'と 'pairlist()'を区別することはできません。 – joran
@joran '同一(pairlist()、NULL)' :) – Owen