R 对NA求值的逻辑表达式

R 对NA求值的逻辑表达式,r,logical-operators,R,Logical Operators,在R中,我有一个函数Outlier,它接受长度为3的数值向量。我试着这样做: Outlier <- function(x) { x <- sort(x) if((x[1] < 1e-2) %% (x[1] > 1e-4))) { print(x) } ... 异常值为了防止这种情况,你应该修改你的目标。NA不只是在x[1]为零时显示,而是在x[1]>1e-4计算为FALSE时显示 TRUE %% FALSE [1] NA FALSE %% FALSE [1]

在R中,我有一个函数Outlier,它接受长度为3的数值向量。我试着这样做:

Outlier <- function(x) {
  x <- sort(x)
  if((x[1] < 1e-2) %% (x[1] > 1e-4))) {
print(x)
  }
...

异常值为了防止这种情况,你应该修改你的目标。
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
解析器足够聪明,能够识别逻辑值和数值之间的差异。

为了防止这种情况,您应该修改您的目标。
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
解析器足够聪明,能够识别逻辑值和数值之间的差异。

严肃问题:你认为%%运算符是做什么的?我现在知道我在打算使用时键入了%&&严肃问题:你认为%%运算符是做什么的?我现在知道我在打算使用时键入了%%要使用与解析器无关的&&值,这里将逻辑值强制为整数。签出1L%%0L。@罗兰:谢谢,我应该在做语句之前签出它。与解析器无关,这里的逻辑值强制为整数。签出1L%%0L。@Roland:谢谢,我应该在发表声明之前签出它。