1

行列の各行をベクトルと比較し、ベクトルの i 番目の値より小さい i 番目の行から最初の値のインデックスを生成したいと考えます。行列の各行の値は、降順で並べ替えられます。行数が非常に多いため、ベクトル化されたソリューションを探しており、ループを避けて関数を適用したいと考えています。

たとえば、次の行列 M とベクトル v を比較したい場合、出力は (3,2,3,NA) になります。

M = matrix(c(10.2,11.0,10,9.5,9.2,8.9,7.6,8.4,5.4,5.6,6.5,7.2),4,3)
M
     [,1] [,2] [,3]
[1,] 10.2  9.2  5.4
[2,] 11.0  8.9  5.6
[3,] 10.0  7.6  6.5
[4,]  9.5  8.4  7.2

v <- c(8.4,9.5,7.0,6.0)

The output should be (3,2,3,NA).

R で「which」関数を使用すると、行ごとに機能しますが、ベクトル化されません。

which(M[2,]<v[2])[1]
2

which(M[3,]<v[3])[1]
3

ありがとうございました!

4

2 に答える 2