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

Dav*_*uer 2 null r

我试图测试列表是否包含一个对象(github源).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 
Run Code Online (Sandbox Code Playgroud)

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

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

Jus*_*tin 7

看看x$a.1由于部分名称匹配而返回.所以,is.null(x$a)FALSE由于R匹配aab.如果你使用[[符号,你将得到预期的结果:is.null(x[['a']]).