各行内でランダムにサンプリングされたマトリックスからどの列がサンプリングされたかを判断しようとしています。関数 sample には、実際にサンプリングされた場所を示す機能がないようです。ここで、すべての値が一意である場合、単純なマッチング ルーチンで問題を解決できます。ただし、私の場合はそうではないため、これは機能しません。
x <- c(2,3,5,1,6,7,2,3,5,6,3,5)
y <- matrix(x,ncol=4,nrow=3)
random <- t(apply(y,1,sample,2,replace=FALSE))
y
[,1] [,2] [,3] [,4]
[1,] 2 1 2 6
[2,] 3 6 3 3
[3,] 5 7 5 5
ランダム
[,1] [,2]
[1,] 2 6
[2,] 3 3
[3,] 5 5
元の行列に値が繰り返されると、ランダム [1,1] が列 1 からサンプリングされたのか、列 3 からサンプリングされたのかわかりません。どちらも値が 2 であるためです。したがって、ここではマッチングが機能しません。
マトリックス「ランダム」に付随して、各値がサンプリングされた列を同じサイズのマトリックスで提供するマトリックスも必要です。たとえば、次のようになります。
[,1] [,2]
[1,] 1 4
[2,] 1 3
[3,] 3 4
ありがとう!