2

これはapply関数で行うのは非常に簡単なはずですが、私はそれに苦労しています。

データのマトリックス(データフレームもOK)があります:

u <- matrix(sample(seq(4),20,T),5,4)
u
     [,1] [,2] [,3] [,4]
[1,]    1    2    4    2
[2,]    4    3    2    2
[3,]    3    3    3    1
[4,]    3    2    4    4
[5,]    4    1    3    4

列jの要素(Excelの間接要素など)を使用して、各行から対応する列の値を選択したいとします。

たとえば、与えられたcol(j)= 3

行1は、row = 1、col(j = 3)= 4に対応する要素を取得し、2を返します(row(1):col(4))

行2は、row = 2、col(j = 3)= 2に対応する要素を取得し、3を返します(row(2):col(2))

..。

行5は、row = 5、col(j = 3)= 3に対応する要素を取得し、3を返します(row(5)、col(3))

最終的にこれらの値のベクトルv<-c(4,2、... 3)

4

2 に答える 2

5

マトリックス インデックスを使用できます。

i <- seq_len(nrow(u))
j <- u[, 3]
u[cbind(i, j)]
于 2013-03-01T02:24:30.097 に答える
1

以下も有効だと思います。

sapply(1:nrow(u), function(i) u[i,u[i,3]])
于 2013-03-01T02:32:07.037 に答える