問題
リストの要素が存在するかどうかをテストしたいのですが、ここに例があります
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
この例では、それfoo$a
が存在することはわかっていますが、テストはを返しますFALSE
。
調べた?exists
ところ、その結果with(foo, exists('a')
が返ってくることがわかりましたがTRUE
、なぜexists('foo$a')
返ってくるのかわかりませんFALSE
。
ご質問
- なぜ
exists('foo$a')
戻るのFALSE
ですか? with(...)
推奨されるアプローチを使用していますか?
foo <- list(a1=1)
!is.null(foo$a)
(または!is.null(foo[["a"]])
安全のために)?(またはexists("a",where=foo)
)