首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NaN时删除na.rm=TRUE

使用NaN时删除na.rm=TRUE
EN

Stack Overflow用户
提问于 2013-04-16 03:49:03
回答 2查看 7.4K关注 0票数 11

这个可重复的示例是我的代码的一个非常简化的版本:

代码语言:javascript
复制
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返回了真!这就是我困惑的原因。

代码语言:javascript
复制
is.na(NaN)
> TRUE
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-16 03:51:31

这是一个语言决定:

代码语言:javascript
复制
> is.na(NaN)
[1] TRUE

is.nan区分:

代码语言:javascript
复制
> is.nan(NaN)
[1] TRUE
> is.nan(NA)
[1] FALSE

所以你可能需要两者都打电话。

票数 8
EN

Stack Overflow用户

发布于 2013-04-16 03:53:32

函数中的na.rm参数通常使用is.na()或类似的函数。

is.na(NaN) == TRUE开始,你就得到了你所观察到的行为。

现在应该把NaN也当作NA来对待吗?(这是另一个问题;)

解决这一问题的最佳方法是显式地告诉R如何处理NaN,举个例子:

代码语言:javascript
复制
ifelse(any(is.nan(x)), NaN, min(x, na.rm=TRUE))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16028446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档