跨多维数组的列应用样本()

问题描述 投票:0回答:1

在 R 中给出以下数组:

  x <- 1:24
  dim(x) <- c(2,4,3)

这给出了:

    > x
    , , 1

         [,1] [,2] [,3] [,4]
    [1,]    1    3    5    7
    [2,]    2    4    6    8

    , , 2

         [,1] [,2] [,3] [,4]
    [1,]    9   11   13   15
    [2,]   10   12   14   16

    , , 3

         [,1] [,2] [,3] [,4]
    [1,]   17   19   21   23
    [2,]   18   20   22   24

如何应用sample()函数来排列矩阵中的列?例如,在第 1 列中,值 1、2、9、10 和 17、18 将在 3 个矩阵中排列,同时保留在第 1 列中。

一个样本可能是:

    > x
    , , 1

         [,1] [,2] [,3] [,4]
    [1,]    10    11    5    23
    [2,]    2    19    22    8

    , , 2

         [,1] [,2] [,3] [,4]
    [1,]    1   3   6   24
    [2,]   17   12   14   16

    , , 3

         [,1] [,2] [,3] [,4]
    [1,]   9   4   21   7
    [2,]   18   20   13   15

谢谢

r multidimensional-array permutation
1个回答
0
投票

我用 for 循环找到了这个解决方案,但对于大型数组可能有更好更高效的解决方案(?)

     for(i in 1:ncol(x)){x[,i,] <- sample(x[,i,])}
© www.soinside.com 2019 - 2024. All rights reserved.