在R中,我有一个函数Outlier,它接受一个长度为3的数字向量。我正在尝试这个:
Outlier <- function(x) {
x <- sort(x)
if((x[1] < 1e-2) %% (x[1] > 1e-4))) {
print(x)
}
...
但是,我收到错误消息“如果(条件){:参数不可解释为逻辑错误”。调试之后,我发现每当x [1] == 0时就会产生错误。不知何故,当x [1] == 0时,逻辑表达式的计算结果为NA。使用其他值,它可以按预期工作。为什么会这样,我该如何预防呢?
答案 0 :(得分:2)
为了防止这种情况,您应该修改目标。 NA
仅在x[1]
为零时才会显示,只要x[1] > 1e-4
评估为FALSE
,它就会显示。
TRUE %% FALSE
[1] NA
FALSE %% FALSE
[1] NA
这显然是有道理的,我只是惊讶地发现它没有返回NaN
:
1 %% 0
[1] NaN
0 %% 0
[1] NaN
这使我得出结论,R
解析器足够聪明,可以识别逻辑值和数值之间的差异。