いくつかの値を持つ巨大なベクトルがありNA、そのベクトルの最大値を見つけようとしています (ベクトルはすべて数値です) が、NA値のためにこれを行うことができません。
NA最大値を計算できるように値を削除するにはどうすればよいですか?
いくつかの値を持つ巨大なベクトルがありNA、そのベクトルの最大値を見つけようとしています (ベクトルはすべて数値です) が、NA値のためにこれを行うことができません。
NA最大値を計算できるように値を削除するにはどうすればよいですか?
を試し?maxてみると、実際にはna.rm =引数があり、デフォルトで に設定されていることがわかりますFALSE。sum()(これは、 、 などを含む他の多くの R 関数の一般的なデフォルトですmean()。)
設定na.rm=TRUEは、あなたが求めていることだけを行います:
d <- c(1, 100, NA, 10)
max(d, na.rm=TRUE)
すべての を削除したい場合は、NA代わりに次のイディオムを使用してください。
d <- d[!is.na(d)]
最後の注意: 他の関数 (例: table()、lm()、およびsort()) には、NA異なる名前を使用する (および異なるオプションを提供する) 関連の引数があります。したがってNA、 が関数呼び出しで問題を引き起こす場合は、関数の引数の中から組み込みの解決策を確認する価値があります。通常、すでにそこにあることがわかりました。
このna.omit関数は、多くの回帰ルーチンが内部で使用するものです。
vec <- 1:1000
vec[runif(200, 1, 1000)] <- NA
max(vec)
#[1] NA
max( na.omit(vec) )
#[1] 1000
?maxna.rmに設定できる追加のパラメータがあることを示していますTRUE。
それとは別に、本当にsを削除したい場合はNA、次のようなものを使用してください:
myvec[!is.na(myvec)]
を呼び出すことができますmax(vector, na.rm = TRUE)。より一般的には、関数を使用できますna.omit()。