5

我想知道在除以零时是否可能有一个我忽略的设置强制R返回NaN而不是± 。Inf

我经常发现自己在做类似的事情

 results[is.infinite(results)] <- NaN

我希望完全跳过过滤/搜索过程。


例子:

### Example:

num <- c(1:5, NA)
denom <- -2:3

quotient <- num / denom
[1] -0.5 -2.0  Inf  4.0  2.5   NA

# desired results
[1] -0.5 -2.0  NaN  4.0  2.5   NA

实现预期结果的简单方法是:

quotient[is.infinite(quotient)] <- NaN

我想知道的是,是否可以避免最后一步,同时仍然获得相同的预期结果。

4

2 回答 2

4

我会切换我的谓词而不是尝试重新定义数学:

 R> is.finite(c(Inf, NA, NaN))    
 [1] FALSE FALSE FALSE 
 R> is.infinite(c(Inf, NA, NaN))   
 [1]  TRUE FALSE FALSE 
 R> is.na(c(Inf, NA, NaN)) 
 [1] FALSE  TRUE  TRUE
 R> 
于 2013-09-18T19:51:07.960 回答
0

这些属性会有帮助吗?0*InfisNaNNaN+Infis also NaN,所以尝试这样的事情也会给你想要的结果:

quotient <- (num / denom)*0 + (num / denom)
## [1] -0.5 -2.0  NaN  4.0  2.5   NA
于 2018-02-07T23:18:35.637 回答