我正在尝试测试列表是否包含对象(github源代码)。到目前为止,这个is.null
函数已经起作用了,除非我正在测试一个名称与非nul项部分匹配的项。
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]])
那样在循环中工作。
查看x$a
。由于部分名称匹配,这将返回1
。所以is.null(x$a)
是FALSE
,因为R将a
与ab
匹配。如果使用[[
表示法,您将得到预期的结果:is.null(x[['a']])
。