首页 > 解决方案 > 有没有办法将 3d 数组的 2d 矩阵乘以 R 中的标量?

问题描述

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

arr = array(diag(2), dim=c(2,2,10))

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

z = arr[,,1:10] * c(1:10)

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

, , 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

我错过了什么吗?

标签: rarraysmatrix

解决方案


我们需要replicate 使长度相同

arr[,,1:10] * rep(1:10, each = length(arr[,, 1]))

否则 1 将乘以arr[, , 1]2 的第一个元素与第二个元素,arr[,, 1]并且由于回收较短向量的元素被回收,length直到arr[, , 1:10]


推荐阅读