这个可重复的示例是我的代码的一个非常简化的版本:
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:我在Windows7上使用64位R版本3.0.0 .
编辑:,在更多的研究中,我发现is.na也为NaN返回了真!这就是我困惑的原因。
is.na(NaN)
> TRUE发布于 2013-04-16 03:51:31
这是一个语言决定:
> is.na(NaN)
[1] TRUEis.nan区分:
> is.nan(NaN)
[1] TRUE
> is.nan(NA)
[1] FALSE所以你可能需要两者都打电话。
发布于 2013-04-16 03:53:32
函数中的na.rm参数通常使用is.na()或类似的函数。
从is.na(NaN) == TRUE开始,你就得到了你所观察到的行为。
现在应该把NaN也当作NA来对待吗?(这是另一个问题;)
解决这一问题的最佳方法是显式地告诉R如何处理NaN,举个例子:
ifelse(any(is.nan(x)), NaN, min(x, na.rm=TRUE))https://stackoverflow.com/questions/16028446
复制相似问题