Problem
Ich möchte testen, ob ein Element einer Liste vorhanden ist. Hier ist ein Beispiel
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
In diesem Beispiel weiß ich, dass foo$a
es das gibt, aber der Test kehrt zurück FALSE
.
Ich habe nachgesehen ?exists
und festgestellt, dass es with(foo, exists('a')
zurückkehrt TRUE
, verstehe aber nicht, warum es exists('foo$a')
zurückkehrt FALSE
.
Fragen
- Warum kehrt
exists('foo$a')
zurückFALSE
? - Wird
with(...)
der bevorzugte Ansatz verwendet?
foo <- list(a1=1)
!is.null(foo$a)
(oder!is.null(foo[["a"]])
um auf der sicheren Seite zu sein)? (oderexists("a",where=foo)
)