为什么is.null对于不存在的列表元素返回false?

时间:2013-06-27 17:21:28

标签: r null

我正在尝试测试列表是否包含对象(github source)。到目前为止,这个is.null函数已经工作了,除非我正在测试一个名称与非零项目部分匹配的项目。

x <- list(ab = 1)

is.null(x$ab)
[1] FALSE     ## expected
is.null(x$b)
[1] TRUE      ## expected
is.null(x$c)     
[1] TRUE      ## expected
is.null(x$a)
[1] FALSE     ## unexpected 

这是is.null函数的预期行为吗?我没有在文档中看到任何迹象。

使用exists函数或其他方法会更好吗? (我还没有使用exists,因为它不会像for(i in 'a') is.null(x[[i]])那样在循环中工作。

1 个答案:

答案 0 :(得分:7)

查看x$a。由于部分名称匹配,返回1。因此,is.null(x$a)FALSE,因为R与a匹配ab。如果您使用[[表示法,则会获得预期结果:is.null(x[['a']])