如何在R中重新排序矢量化Tensor?

xqnpmsa8  于 2023-01-03  发布在  其他
关注(0)|答案(1)|浏览(125)

例如,考虑向量化的dim RSTTensor

A <- (a111,a112,a113,...a11T,a121,...a1ST..,a311,...,aRST)

如何重新订购才能获得

(a_111,a_211,...,a_R11,a_112,a_212,...,a_RST)

一种方法是将A转换为数组

Arr <- array(A,dim = (R,S,T))

然后用另一种方法矢量化,我不知道怎么做,也不知道它是否有效。
c(Arr)不允许指定要扩展的轴。
expand.grid()似乎也没有帮助,因为第一个因子总是变化最快。

u5rb5r59

u5rb5r591#

让我们以下面的向量为例,它包含RST形式的整数,这样我们就可以跟踪它们。我们假设一个3 x 3 x 3的数组:

A <- c(111, 112, 113, 121, 122, 123, 131, 132, 133,
       211, 212, 213, 221, 222, 223, 231, 232, 233,
       311, 312, 313, 321, 322, 323, 331, 332, 333)

我们需要做的只是指定原始对象的尺寸:

dim_A <- c(3, 3, 3)

我们可以得到一个向量形式的重排序数组,如下所示:

c(t(apply(array(A, dim = dim_A), 3, \(x) x)))
#>  [1] 111 211 311 112 212 312 113 213 313 121 221 321 122 222 322 123 223 323 131
#> [20] 231 331 132 232 332 133 233 333

创建于2023年1月1日,使用reprex v2.0.2

相关问题