Basics-RにおけるNULL,NA,NaNの処理
1713 ワード
に質問
NULL
、NA
(Not Available)、NaN
(Not a Number)を正しく処理したい.イニシアチブ
あなたのデータは、
NULL
、NA
、NaN
に存在することがあります.これらのデータを処理するには、「通常」の値とは異なり、決定的なテストが必要になる場合があります.これらの値を比較した例を次に示します.
x 5
# logical(0)
y 5
# NA
z 5
# NA
変数が値の1つであるかどうかをテストする方法:
is.null(x)
# TRUE
is.na(y)
# TRUE
is.nan(z)
# TRUE
なお、
NULL
は他の2つとは異なる.NULL
は値がないことを意味し、NA
およびNaN
は値があることを意味するが、使用できない可能性がある.次の例で区別します.# 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'
第1例は、
y
がNULL
であるかどうかを検査し、結果y
はそうではない.第2の例では、x
がNA
であるかどうかを確認しようとしたが、値は検出されなかった.ベクトル要約関数の「悪い」値を無視
NA
またはNaN
を含むベクトルに対してmean()
またはsum()
のような関数を使用すると、結果はNA
およびNaN
を返します.これは通常意味がありませんが、このような結果は「悪い」値の存在を注意します.多くの関数には、これらの値を無視できるna.rm
があります.vy
ベクトルから[悪い値](Hard Value)を除去するには
これらの値は、
is.na()
またはis.nan()
の逆関数を使用して削除できます.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
と、それに対応する関数is.finite()
およびis.infinite()
もある.参照/Manipulating data/comparing vectors or factors with NA
テキストリンク:http://www.cookbook-r.com/Basics/Working_with_NULL_NA_and_NaN/