有没有一种方法可以执行if语句为空值

时间:2020-05-20 08:28:33

标签: r

不确定为什么我会收到此错误。我们可以不执行该语句吗?

asd <- c()
asd1 <- c()

if(asd == asd1)
{
  pr <- 0
} else{
  pr <- 1
}
Error in if (asd == asd1) { : argument is of length zero

我们不能在此处执行空值吗?因为asd也是0,而asd1也是0。我也不需要使用length(asd)== length(asd1)。但是asd == asd1应该正常工作吗?

3 个答案:

答案 0 :(得分:1)

不,您正在尝试什么都不做。如果您不想使用长度,但实际上想检查两个向量是否相同:

identical(asd,asd1)

答案 1 :(得分:0)

使用所有功能

asd <- c()
asd1 <- c()

if(all(asd == asd1)){
  pr <- 0
} else{
  pr <- 1
}

> pr
[1] 0

答案 2 :(得分:0)

像大多数r函数一样,“ ==”是R中的矢量函数。因此==(x,y)比较x和y的元素,返回相同大小的矢量。

如dvd280所述,identical是对象之间的“严格相等性”,用于测试一切是否完全相同 (我所说的一切都是指;结构的每个元素都必须相同)。 注意:它不会检查2个对象是否存储在内存中的同一位置。

all.equal(带有一些参数)检查每个人的平等性。

向量逻辑在R中经常见到;例如

c(TRUE,TRUE)&c(TRUE,FALSE)

返回

c(TRUE,FALSE)

很好,因为它是一种用于统计的语言:它依赖向量,而不是变量,而实际上在r中,变量是长度为1的向量。