我有两个只有布尔(和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 " }"
答案 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,并保持计数不变(如果是)。否则它继续检查两者是否都为真,如果它们是,则保持计数不变。