比较两组观察中的布尔值并计算R中的TRUE匹配

时间:2015-11-28 03:37:18

标签: r boolean comparison na

我有两个只有布尔(和NA)的数据集。我正在尝试运行一个while循环,它将在每个观察之间迭代(每个数据集有227496个观察值),并且只要两者都为TRUE就计数。我的代码是这样的:

while(i<=227496){
  if(upperX[i] == TRUE & upperY[i] == TRUE){
    count = count+1
  }
  i = i+1
}

在返回错误之前,它会升至i = 195:

Error in if (upperX[i] == TRUE & upperY[i] == TRUE) { : 
  missing value where TRUE/FALSE needed

在upperX [195]和upperY [195]都是NA,我假设这是为什么会发生这种情况,但是每当我尝试为这个实例创建一个异常时我就会得到:

Error: unexpected '}' in "  }"

1 个答案:

答案 0 :(得分:0)

我需要为其中一个值为NA的事件添加一个例外,因为当被问及是否为真时,NA不显示为FALSE,它只显示为NA。

我的解决方案:

while(i<=227496){
  if(is.na(upperX[i]) | is.na(upperY[i])){
    count = count
  }
  else if(upperX[i] == TRUE & upperY[i] == TRUE){
    count = count+1
  }
  i = i+1
}

首先检查是否为NA,并保持计数不变(如果是)。否则它继续检查两者是否都为真,如果它们是,则保持计数不变。