受早期代码高尔夫的启发,为什么会出现:
>NaN^0
[1] 1
NA^0
等于1是有道理的,因为NA
表示缺失数据,而任何数的零次方都等于1,包括-Inf
和Inf
。然而NaN
表示“非数字”,那么为什么会这样呢?当调用?NaN
时,帮助页面甚至更加令人困惑/担忧:
在R中,基本上所有数学函数(包括基本算术)都应该能够正确处理
+/-Inf
和NaN
作为输入或输出。基本规则应该是,在涉及到
Inf
的运算中要考虑适当的数学极限值。涉及到
NaN
的计算将返回NaN
或者也许是NA
:这两种情况没有保障,可能取决于R平台(因为编译器可能重新排列计算顺序)。
这背后是否存在哲学原因,还是只是与R如何表示这些常量有关?
if((x1 = INTEGER(s1)[i1]) == 1 || (x2 = INTEGER(s2)[i2]) == 0); REAL(ans)[i] = 1.;
- Simon O'Hanlon