#arrays #r #multidimensional-array
#массивы #r #многомерный массив
Вопрос:
Как можно выполнять поэлементные арифметические операции с двумя массивами, которые совместимы в первых измерениях, но имеют также дополнительное измерение?
Например, умножьте массив a
(3 x 3 x 2) на массив b
(3 x 3):
a <- array(1:18, dim=c(3,3,2))
b <- diag(3)
Следующее не выполняется из-за несоответствия массивов.
> a * b
Чтобы это сработало, вы должны преобразовать массив b
в массив с правильным
количеством измерений.
> a * array(b, dim=c(3,3,2))
Это не кажется мне очень простым, и я уверен, что должен
быть более простой способ.
Ответ №1:
Вы можете попробовать:
a * c(b)
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
Комментарии:
1. Да, это желаемый результат.