如何处理“不符合”的数组?

Ern*_*t A 3 arrays r multidimensional-array

如何对两个在第一个维度上一致但还有一个额外维度的数组进行逐元素算术运算?

例如,将数组a(3 x 3 x 2) 乘以数组b(3 x 3):

a <- array(1:18, dim=c(3,3,2))
b <- diag(3)
Run Code Online (Sandbox Code Playgroud)

由于数组不一致,因此以下操作失败。

> a * b
Run Code Online (Sandbox Code Playgroud)

为了让它工作,您必须将数组转换b为具有正确维数的数组。

> a * array(b, dim=c(3,3,2))
Run Code Online (Sandbox Code Playgroud)

我觉得这不是很简单,我确信一定有一种更简单的方法。

Bro*_*ieG 5

你可以试试:

a * c(b)
Run Code Online (Sandbox Code Playgroud)

c将剥离属性,然后允许将其b作为简单向量进行回收,并导致我认为您想要的结果:

, , 1

     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    5    0
[3,]    0    0    9

, , 2

     [,1] [,2] [,3]
[1,]   10    0    0
[2,]    0   14    0
[3,]    0    0   18
Run Code Online (Sandbox Code Playgroud)