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

时间:2018-01-22 08:00:12

标签: r 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

提前致谢

1 个答案:

答案 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)根据你的应用程序而定。)