[英]NaN is removed when using na.rm=TRUE
這個可重復的示例是我的代碼的一個非常簡化的版本:
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
返回true! 這是我迷茫的原因。
is.na(NaN)
> TRUE
這是一個語言決定:
> is.na(NaN)
[1] TRUE
is.nan
區分:
> is.nan(NaN)
[1] TRUE
> is.nan(NA)
[1] FALSE
所以你可能需要同時打電話。
函數中的na.rm
參數通常使用is.na()
或類似函數。
因為is.na(NaN) == TRUE
,然后你得到你正在觀察的行為。
現在應該將 NaN視為NA嗎? 這是一個不同的問題;)
解決這個問題的最好方法是明確告訴R
如何處理NaN
一個例子:
ifelse(any(is.nan(x)), NaN, min(x, na.rm=TRUE))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.