Cuidado con los $
El otro tropezamos con el siguiente artefacto:
a <- list(aa = 12, bb = 14)
is.null(a$a)
#[1] FALSE
a$a
#[1] 12
No es un bug de R, por que la documentación reza:
x$name is equivalent to x[[“name”, exact = FALSE]]
Y se pueden constrastar:
a[["a", exact = FALSE]]
a[["a", exact = TRUE]]
Comentarios:
- Odio muchísimo los bugs que no son bugs porque están documentados en el la nota ‡2.a.(c), párrafo §23.3 de la sección 14 de un manual oscuro.
- Odio mucho al os gilipollas que se complacen en mandarte a leer manuales.
- Odio mucho las violaciones del principio de mínima sorpresa.
- Soy consciente de que R es, fundamentalmente, una plataforma de análisis interactivo y no (o solo subsidiariamente) un lenguaje de programación.
- Soy consciente de que muchos de los defaults de R se decidieron antes de que se popularizasen los completadores de comandos.