当字符串不匹配时,我希望NULL返回而不是返回整数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当字符串不匹配时,我希望NULL返回而不是返回整数相关的知识,希望对你有一定的参考价值。
在以下代码中,当字符串不匹配时,即在"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
提前致谢
答案
为什么你认为它“应该”返回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)
。
以上是关于当字符串不匹配时,我希望NULL返回而不是返回整数的主要内容,如果未能解决你的问题,请参考以下文章
与where子句查询的Eloquent嵌套关系在false条件下返回集合
ConfigurationManager 返回 null 而不是字符串值
当 GET 返回 null 而不是 List 时 KotlinxSerializer 出现 NullPointerException