R:如何正确使用exists()

时间:2017-11-02 20:17:52

标签: r

我有一份清单清单。我必须在列表上运行lapply来对每个内部列表进行一些工作。内部列表并不总是具有相同的结构,因此我尝试使用exists进行检查,然后继续:

innerlist <- list(foo="anotherfoo", bar="anotherbar", baz="baz")
if(exists("innerlist$baz")) cat("got a baz!!\n") #never prints anything!

我做错了什么?!!如何检查列表属性/项的存在?提前谢谢......

1 个答案:

答案 0 :(得分:2)

这是因为exists查找变量而innerlist$baz不是变量。 innerlist是一个变量。 $实际上是一个隐藏的函数调用。它与

相同
`$`(innerlist, baz)

如果您要检查列表中的密钥,请不要使用exists()

如果要检查列表是否有密钥,可以执行

"baz" %in% names(innerlist)
# or
!is.null(innerlist$baz)