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

Nis*_*nth 9 r nan na na.rm

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

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
Run Code Online (Sandbox Code Playgroud)

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

ps:我在Windows7上使用的是64位R版本3.0.0.

编辑: 经过一些研究,我发现is.na返回也是真的NaN!这是我迷茫的原因.

is.na(NaN)
> TRUE
Run Code Online (Sandbox Code Playgroud)

Mat*_*erg 7

这是一个语言决定:

> is.na(NaN)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

is.nan 区分:

> is.nan(NaN)
[1] TRUE
> is.nan(NA)
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

所以你可能需要同时打电话.

  • 同样感兴趣的是:class(NA)=="logical"; class(NaN)=="numeric". (3认同)