次の行列を変更したいとします。
a= matrix(c(
1:20),ncol=5)
a
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
rvec= c(4,2)
cvec=c(1,5)
a[rvec,cvec] = c(200,500)
a
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 500 6 10 14 500
[3,] 3 7 11 15 19
[4,] 200 8 12 16 200
でも私はしたい:
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 500
[3,] 3 7 11 15 19
[4,] 200 8 12 16 20
ベクトルを値の位置と見なして、x,y (4,1) と x,y (2,5) を c(200,500)
それぞれ in に変更します。
forループでそれを行うことができますが、遅すぎます。
for(i in 1:length(c(200,500)))
{
a[rvec[i],cvec[i]] = c(200,500)[i]
}
a
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 500
[3,] 3 7 11 15 19
[4,] 200 8 12 16 20