Problema
Eu gostaria de testar se existe um elemento de uma lista, aqui está um exemplo
foo <- list(a=1)
exists('foo')
TRUE #foo does exist
exists('foo$a')
FALSE #suggests that foo$a does not exist
foo$a
[1] 1 #but it does exist
Neste exemplo, sei que foo$a
existe, mas o teste retorna FALSE
.
Procurei ?exists
e descobri que with(foo, exists('a')
retorna TRUE
, mas não entendo por que exists('foo$a')
retorna FALSE
.
Questões
- Por que
exists('foo$a')
retornaFALSE
? - É o uso da
with(...)
abordagem preferida?
foo <- list(a1=1)
!is.null(foo$a)
(ou!is.null(foo[["a"]])
para estar no lado seguro)? (ouexists("a",where=foo)
)