Basics-R中NULL, NA, NaN的處理

貢獻者馬柑鈴

問題

你想正確處理NULL、NA (Not Available)、NaN(Not a Number)。

方案

你的數(shù)據(jù)有時將會存在NULLNA 、NaN。處理這些數(shù)據(jù)有些不同于”正?!敝?,并可能需要確定性測試。

以下是這些值相比較的例子:

x <- NULL
x > 5
# logical(0)

y <- NA
y > 5
# NA

z <- NaN
z > 5
# NA

如何測試某個變量是否是其中的一個值:

is.null(x)
# TRUE

is.na(y)
# TRUE

is.nan(z)
# TRUE

注意,NULL不同于其他兩個。NULL意味著沒有值,而NANaN表示有價,盡管也許是不可用的。下面有一個例子區(qū)分:

# Is y null?
is.null(y)
# FALSE

# Is x NA?
is.na(x)
# logical(0)
# Warning message:
# In is.na(x) : is.na() applied to non-(list or vector) of type 'NULL'

第一個例子,檢查y是否是NULL,結(jié)果y并不是;第二個例子,試圖檢查x是否是NA,但并沒有值被檢測。

忽視向量匯總函數(shù)中的“壞”值

如果你對包含NANaN的向量使用諸如mean()sum()之類的函數(shù),結(jié)果將返回NANaN,這通常沒有任何意義,雖然這樣的結(jié)果會提醒你有“壞”值的存在。許多函數(shù)都有na.rm可以將這些值忽略。

vy <- c(1, 2, 3, NA, 5)
# 1  2  3 NA  5
mean(vy)
# NA
mean(vy, na.rm=TRUE)
# 2.75

vz <- c(1, 2, 3, NaN, 5)
# 1   2   3 NaN   5
sum(vz)
# NaN
sum(vz, na.rm=TRUE)
# 11

# NULL不是問題,因為它不存在
vx <- c(1, 2, 3, NULL, 5)
# 1 2 3 5
sum(vx)
# 11

從向量中移除”壞值“

使用is.na()is.nan()的反向函數(shù),可以將這些值移除。

vy
# 1  2  3 NA  5
vy[!is.na(vy)]
# 1  2  3  5

vz
# 1   2   3 NaN   5
vz[!is.nan(vz)]
# 1  2  3  5

注意

也有無限值Inf-Inf,及其相應(yīng)的函數(shù)is.finite()is.infinite()。

/Manipulating data/Comparing vectors or factors with NA


原文鏈接:http://www.cookbook-r.com/Basics/Working_with_NULL_NA_and_NaN/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問題 你想正確處理NULL、NA (Not Available)、NaN(Not a Number)。 方案 你的...
    杏月阿六閱讀 2,018評論 0 2
  • 在挖掘分析的過程當中對字符串的處理是極為重要的,且出現(xiàn)也較為頻繁,R語言作為當前最為流行的開源數(shù)據(jù)分析和可視化平臺...
    果果哥哥BBQ閱讀 6,157評論 0 8
  • 姓名:梁涵瑜,年齡9歲 第1小組 自鄭州親子班結(jié)束,家長和孩子成為同學,共同制定清單,開始踐行,規(guī)劃自己的...
    梁正欣閱讀 285評論 0 0
  • 有個人死了,他才剛剛意識到自己的生命如此短暫。這時,他看見佛祖手拎一個箱子向他走來。佛祖說:“好了,我們走吧?!蹦?..
    心疼你的疼閱讀 23,023評論 0 0
  • 閱讀【西游殤】小說,請點:傳送門 悟空 立于乾坤與天齊,一聲大圣四海揚。 前路縱使妖魔海,齊天威勢不...
    傅人閱讀 2,111評論 68 55

友情鏈接更多精彩內(nèi)容