215

いくつかの値を持つ巨大なベクトルがありNA、そのベクトルの最大値を見つけようとしています (ベクトルはすべて数値です) が、NA値のためにこれを行うことができません。

NA最大値を計算できるように値を削除するにはどうすればよいですか?

4

7 に答える 7

295

を試し?maxてみると、実際にはna.rm =引数があり、デフォルトで に設定されていることがわかりますFALSEsum()(これは、 、 などを含む他の多くの 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、 が関数呼び出しで問題を引き起こす場合は、関数の引数の中から組み込みの解決策を確認する価値があります。通常、すでにそこにあることがわかりました。

于 2011-10-09T22:21:48.687 に答える
104

このna.omit関数は、多くの回帰ルーチンが内部で使用するものです。

vec <- 1:1000
vec[runif(200, 1, 1000)] <- NA
max(vec)
#[1] NA
max( na.omit(vec) )
#[1] 1000
于 2011-10-09T22:27:03.090 に答える
23

?maxna.rmに設定できる追加のパラメータがあることを示していますTRUE

それとは別に、本当にsを削除したい場合はNA、次のようなものを使用してください:

myvec[!is.na(myvec)]
于 2011-10-09T22:22:45.080 に答える
16

を呼び出すことができますmax(vector, na.rm = TRUE)。より一般的には、関数を使用できますna.omit()

于 2011-10-09T22:22:21.917 に答える