R随机选择矩阵单元格和循环

R Random Selection of Matrix Cells and Loop

我有两个 3x3 矩阵,我想从每一行中随机 select 一个项目(两个矩阵中的相同对应项目)并将这些 'selected' 值记录在一个新矩阵中。

从那里我想重复这个过程 5 次,每次都添加到矩阵中,这样最后我就有了一个随机 selected 值的 3x10 矩阵。

我将尝试说明我的意思:

我有 2 个矩阵 A 和 B。

> A = matrix( c(4,7,1,9,4,2,1,3,9), nrow = 3, ncol = 3)
> A
     [,1] [,2] [,3]
[1,]    4    9    1
[2,]    7    4    3
[3,]    1    2    9
> B = matrix( c(2, 4, 3, 1, 5, 7, 4, 3, 2), nrow=3, ncol=3) 
> B
     [,1] [,2] [,3] 
[1,]    2    1    4
[2,]    4    5    3
[3,]    3    7    2

然后我想随机 select 一个介于 1 和 3 之间的整数(因为每个矩阵中有 3 列)

> random <- sample(1:3, length)
> random
[1] 1 3 2

因为数字是 1,3 和 2,我想从矩阵 A 和 B 中创建第 1 行的第一个元素、第 2 行的第 3 个元素和第 3 行的第 2 个元素的向量.这就是新的矩阵C.

> C = matrix(c(4,3,2,2,3,7), nrow = 3, ncol = 2)
> C
     [,1] [,2]
[1,]    4    2
[2,]    3    3
[3,]    2    7

在此之后,我想循环该过程 5 次,每次都将生成的矩阵添加到现有“C”矩阵的一侧。

我是 R 的初学者,所以我的问题是:如何结合随机 selection 和循环来创建所需的结果?非常感谢任何帮助或建议,谢谢。

(我想以更大的规模重新创建它)

你可以试试

M <- cbind(c(t(A)), c(t(B)))
fnc <- function(){
  n <- nrow(A)
  ind <- sample(n) + (1:n-1)*n
  M[ind, ]
}
set.seed(0)
do.call(cbind, lapply(1:5, function(i)fnc()))
#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,]    1    4    9    1    1    4    9    1    4     2
# [2,]    7    4    3    3    4    5    7    4    4     5
# [3,]    2    7    1    3    1    3    9    2    9     2