我想知道是否可能有一个设置我忽略了强制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
我想知道的是,如果仍能获得相同的预期结果,可以避免最后一步。
答案 0 :(得分:5)
我会切换我的谓词,而不是试图重新定义数学:
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>
答案 1 :(得分:0)
这些属性会有用吗? 0*Inf
NaN
而NaN+Inf
也是NaN
,所以尝试这样的事情也会得到您想要的结果:
quotient <- (num / denom)*0 + (num / denom)
## [1] -0.5 -2.0 NaN 4.0 2.5 NA