あいまいな質問のタイトルで申し訳ありませんが、私はより具体的な何かを理解することができませんでした。
私は3x2のマトリックスを持っていますc
:
> c
[,1] [,2]
[1,] 1 2
[2,] 1 3
[3,] 2 3
それが重要ですncol(c) == 2
。
私もマトリックスを持っていますind
:
> ind
[,1] [2] [,3] [,4]
[1,] 2 2 2 1
[2,] 1 1 2 2
[3,] 2 2 2 1
nrow(c) == nrow(ind)
、および行列の値が1と2であることが重要ですind
(cの各行の列インデックスのように)
私が取得したいのは、次のようなa
同じ薄暗い行列です:ind
a[i,j] == c[i,ind[i,j]]
> a
[,1] [2] [,3] [,4]
[1,] 2 2 2 1
[2,] 1 1 3 3
[3,] 3 3 3 2
たとえば、以下を使用する場合など、あまり包括的でない状況でも同様のことができnrow(c) == 1
ますapply
。
> apply(c,2,function(x){return(matrix(x[ind], nrow(ind)))})
mapplyを使用して2つのリストを反復処理する方法があることは知っていますが、
1)行列を行のリストとして表すための最良の方法がわかりません2)このソリューションを醜くします
私がここで説明したことを達成するための最良の方法は何ですか?