【问题标题】:Covert NaN to zero in R code在 R 代码中将 NaN 转换为零
【发布时间】:2018-10-11 15:12:52
【问题描述】:

这是我的 R 代码的一部分:

for (i in 1:n) {

...

Smw[i]<-(mw[i]-Emw[i])/(Vmw[i]^(0.5)

...

}

我得到了这个输出

>Smw
 [1] 1.4205658 1.4357139 0.6331807 0.5006390 1.0186496 0.7762059 0.7129556 1.2702147 0.9721943
[10] 1.1156639 0.6908741 0.9994839 0.4976403 0.6265969 0.8362247 0.9150794 1.4028611 1.8190172
[19] 1.4290714 1.2475859 1.2874732 1.0358361 0.7494117 0.4077862 0.7082040 0.6408069 0.5158288
[28] 0.8990276 1.3660975 0.9901475 1.3291363 1.5966929 1.3004625 1.6013889 1.8312262 1.8797908
[37] 1.4265688 1.2947859 1.2763606 0.7276069 0.1641367 0.0000000 0.0000000 0.0000000 0.0000000
[46] 0.5363989 0.8374326 0.4455664 1.4205658       **NaN**

我想继续

ooc=Cplus>5

lenOOC = sum(ooc)

lenOOC

我无法获得 sum(ooc),因为我的数据中有一个 NaN。如何将 NaN 转换为零?我的 Smw 数据可能包含负值,因此 max() 不适合。

【问题讨论】:

标签: r sum nan


【解决方案1】:

使用is.na 函数对向量进行索引,使用基本 R 单行来修复这一点非常简单

Smw[is.na(Smw)] <- 0

这将使您的求和工作。但是,保留您的NaN 可能更合适,因为这可能是以后有用的信息。因此,也许最好在sum 函数中使用na.rm,这样您就不会不可逆地修改信息。

sum(Smw, na.rm = TRUE)

例如:

> x <- c(2, 8, NaN)
> sum(x)
NaN
> sum(x, na.rm = T)
10
> x
  2   8 NaN

【讨论】:

    猜你喜欢
    • 2011-07-04
    • 2012-04-25
    • 2018-11-05
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 2023-01-20
    • 2020-01-10
    • 2019-02-28
    相关资源
    最近更新 更多