Soy consciente de que los valores NULL en las listas a veces puede trip gente. Tengo curiosidad por qué en un caso específico lapply
y rapply
parecen tratar NULL
valores diferente.¿Por qué aplicar Rapply y aplicar NULL de forma diferente?
l <- list(a = 1, c = NULL, d = 3)
lapply(l,is.null)
$a
[1] FALSE
$c
[1] TRUE
$d
[1] FALSE
Hasta ahora todo bien. ¿Qué tal si hacemos exactamente lo mismo con rapply
?
rapply(l, is.null, how = "replace")
$a
[1] FALSE
$c
list()
$d
[1] FALSE
Este ejemplo es muy simple y no recursivo, pero ver el mismo comportamiento en rapply
con listas anidadas.
Mi pregunta es ¿por qué? Si, como se anuncia en ?rapply
, se trata de una 'versión recursiva de lapply', ¿por qué se comportan de manera tan diferente en este caso?
1 Para señalando que '' null' es un pairlist' vacía. Entonces parece que estás diciendo que 'rapply' no puede (o no) distinguir entre' NULL' y 'pairlist()'. – joran
@joran 'idéntico (pairlist(), NULL)' :) – Owen