15

これを行うと、正しい結果が得られます。

a <- c("10","28","3")
which(as.numeric(a) == min(as.numeric(a)))
[1] 3

しかし、ベクトルにNAがある場合は、問題があります

a <- c("10","28","3","NA")
which(as.numeric(a) == min(as.numeric(a)))
integer(0)
Warning messages:
1: In which(as.numeric(a) == min(as.numeric(a))) :
  NAs introduced by coercion
2: In which(as.numeric(a) == min(as.numeric(a))) :
  NAs introduced by coercion
4

2 に答える 2

15

2つのこと。

"NA"まず、欠測値の文字列とRデータ表現には違いがありますNA。例のNAを囲む引用符を削除して、次を確認してください。

a <- c("10","28","3",NA)

次に、実際の欠落値(つまり、文字列ではない)で使用minしている場合は、次を使用する必要があります。"NA"na.rm = TRUE

which(as.numeric(a) == min(as.numeric(a),na.rm = TRUE))
于 2012-10-23T01:15:13.303 に答える
8

あなたの主な問題はna.rm = TRUE、への呼び出し内で指定しないことですmin

numeric_a <- as.numeric(a)

which(numeric_a == min(numeric_a, na.rm = TRUE))
## [1] 3

またはwhich.min、NA値を削除するように指定する必要のないを使用することもできます。これは、すべての一致ではなく、最初の一致のみを提供します(これを明確にするように通知してくれた@Dasonに感謝します)

which.min(numeric_a)
于 2012-10-23T01:15:20.797 に答える