有没有办法将 3d 数组的 2d 矩阵乘以 R 中的标量?

Rya*_*ham 5 arrays r matrix

我有一个 2x2x10 的单位矩阵数组,用

arr = array(diag(2), dim=c(2,2,10))
Run Code Online (Sandbox Code Playgroud)

我希望将该数组中的每个 2x2 矩阵乘以一个标量 c(1:10)

z = arr[,,1:10] * c(1:10)
Run Code Online (Sandbox Code Playgroud)

但是,我得到了意想不到的结果。的前三个2×2矩阵z如下所示

, , 1

     [,1] [,2]
[1,]    1    0
[2,]    0    4

, , 2

     [,1] [,2]
[1,]    5    0
[2,]    0    8

, , 3

     [,1] [,2]
[1,]    9    0
[2,]    0    2
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

akr*_*run 3

我们需要进行rep复制以使长度相同

arr[,,1:10] * rep(1:10, each = length(arr[,, 1]))
Run Code Online (Sandbox Code Playgroud)

否则 1 乘以 2 的第一个元素arr[, , 1]和 2 的第二个元素arr[,, 1],并且由于循环利用较短向量的元素,直到lengthofarr[, , 1:10]