NaN被除去使用na.rm时= TRUE(NaN is removed when using na.

2019-08-31 07:45发布

这重复的例子,是我的代码非常简化的版本:

x <- c(NaN, 2, 3)

#This is fine, as expected
max(x)
> NaN

#Why does na.rm remove NaN?
max(x, na.rm=TRUE) 
> 3

对我来说, NA (缺失值)和NaN (非数字)是两个完全不同的实体,为什么na.rm删除NaN ? 我怎能无视NA ,而不是NaN

PS:我用64位R 3.0.0版本的Windows7上。

编辑:在一些研究中,我发现, is.na为返回true NaN呢! 这是混淆了我的事业。

is.na(NaN)
> TRUE

Answer 1:

这是一个语言决定:

> is.na(NaN)
[1] TRUE

is.nan区分:

> is.nan(NaN)
[1] TRUE
> is.nan(NA)
[1] FALSE

所以,你可能需要调用两个。



Answer 2:

na.rm在函数的参数一般采用is.na()或类似的功能。
而且,由于is.na(NaN) == TRUE ,你然后让你观察到的行为。

现在为NaN被视为也NA? 这是一个不同的问题;)


解决这个问题的最好的办法就是明确地告诉R如何处理NaN一个例子:

ifelse(any(is.nan(x)), NaN, min(x, na.rm=TRUE))


文章来源: NaN is removed when using na.rm=TRUE
标签: r nan na na.rm