在以下代码中,当字符串不匹配时,即在"b"
列表中搜索reviews
时,我应该得到NULL。但我得到integer(0)
。如何强制它为null。 is.null
似乎不起作用。
names <- c("a","b")
reviews <- c("a","d")
for (i in seq_len(length(names))) {
x <-which(names[i]==reviews)
print(x)
print(is.null(x))
print(!is.null(x))
}
#[1] 1
#[1] FALSE
#[1] TRUE
#integer(0)
#[1] FALSE
#[1] TRUE
提前致谢
答案 0 :(得分:0)
为什么你认为它“应该”返回NULL?是否记录which(c(FALSE,FALSE))
返回NULL的某处?不,which
的帮助说:
If ‘arr.ind == FALSE’ (the default), an integer vector with
‘length’ equal to ‘sum(x)’, i.e., to the number of ‘TRUE’s in ‘x’;
有多少TRUE?零。那么你又回来了什么?长度为零的整数向量 - integer(0)
。这与NULL
不同。
NULL
通常保留用于undefined
某些意义上的内容,但在这种情况下不返回的内容。
如果你想捕获这种情况,请对length(z)==0
进行测试,TRUE
如果z
是零长度向量(任何类型,它可能是character(0)
根据你的应用程序而定。)