6

0 から 1 までの数値を含む一連の順序付きベクトルがあります。特定の値 r の最初の要素のインデックスを見つける必要があります。

x <- c(0.1, 0.3, 0.4, 0.8)
which.max(x >= 0.4)
[1] 3  # This is exactly what I need

ターゲット値がベクトルの最大値を超えている場合、 which.max() は 1 を返します。これは、「実際の」最初の値と混同される可能性があります。

which.max(x >= 0)
[1] 1
which.max(x >= 0.9) # Why?
[1] 1

この式を変更して、結果として NA を取得するにはどうすればよいですか?

4

1 に答える 1

12

最初の要素を使用which()して返すだけです。

which(x > 0.3)[1]
[1] 3

which(x > 0.9)[1]
[1] NA

なぜwhich.max()うまくいかないのかを理解するには、R が数値から論理値、さらに数値へと値を変換する方法を理解する必要があります。

x > 0.9
[1] FALSE FALSE FALSE FALSE

as.numeric(x > 0.9)
[1] 0 0 0 0

max(as.numeric(x > 0.9))
[1] 0

which.max(as.numeric(x > 0.9))
[1] 1
于 2013-06-30T21:17:32.560 に答える