This reproducible example is a very simplified version of my code:
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
To me, NA
(missing value) and NaN
(not a number) are two completely different entities, why does na.rm
remove NaN
? How can I ignore NA
and not NaN
?
ps:I am using 64-bit R version 3.0.0 on Windows7.
Edit:
Upon some more study I found that is.na
returns true for NaN
too! This is the cause of confusion for me.
is.na(NaN)
> TRUE
na.rm
arguments in functions generally useis.na()
or an analogous function.And since
is.na(NaN) == TRUE
, you then get the behavior you're observing.Now should NaN be treated as also NA? That is a different question ;)
The best way around this is to explicitly tell
R
how to handleNaN
One example:It's a language decision:
is.nan
differentiates:So you may need to call both.