我有一个 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)
我错过了什么吗?
我们需要进行rep
复制以使长度相同
arr[,,1:10] * rep(1:10, each = length(arr[,, 1]))
Run Code Online (Sandbox Code Playgroud)
否则 1 乘以 2 的第一个元素arr[, , 1]
和 2 的第二个元素arr[,, 1]
,并且由于循环利用较短向量的元素,直到length
ofarr[, , 1:10]