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 N
na.rm
arguments in functions generally use is.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 handle NaN
One example:
ifelse(any(is.nan(x)), NaN, min(x, na.rm=TRUE))