我有一份清单清单。我必须在列表上运行lapply来对每个内部列表进行一些工作。内部列表并不总是具有相同的结构,因此我尝试使用exists进行检查,然后继续:
innerlist <- list(foo="anotherfoo", bar="anotherbar", baz="baz")
if(exists("innerlist$baz")) cat("got a baz!!\n") #never prints anything!
我做错了什么?!!如何检查列表属性/项的存在?提前谢谢......
答案 0 :(得分:2)
这是因为exists
查找变量而innerlist$baz
不是变量。 innerlist
是一个变量。 $
实际上是一个隐藏的函数调用。它与
`$`(innerlist, baz)
如果您要检查列表中的密钥,请不要使用exists()
。
如果要检查列表是否有密钥,可以执行
"baz" %in% names(innerlist)
# or
!is.null(innerlist$baz)