当字符串不匹配时,我希望NULL返回而不是返回整数(0)

问题描述 投票:0回答:1

在以下代码中,当字符串不匹配时,即在"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

提前致谢

r null
1个回答
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)

© www.soinside.com 2019 - 2024. All rights reserved.