簡體   English   中英

使用na.rm = TRUE時會刪除NaN

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM