Как добавить 2-мерную матрицу в 3D-массив и сохранить форму 3D-матрицы? - PullRequest
1 голос
/ 01 марта 2020

Я пытаюсь добавить матрицу к каждой «подматрице» трехмерного массива. Я хотел бы сделать это без al oop.

a = array(1:24, dim = 2:4)
a[1,,]
a[2,,]

b = array(1:12, dim = 3:4)
b

c1 = a[1,,] + b
c2 = a[2,,] + b

c = apply(a, 1, function(a_){
  da_ = dim(a_)
  db = dim(b)
  message(sprintf("The dimensions of a_ are [%i x %i] and the dimensions of b are [%i x %i]", da_[1], da_[2], db[1], db[2]))
  a_ + b
})

. В приведенном выше коде я хотел бы, чтобы c[1,,] было равно c1, а c[2,,] было равно c2. Возможно ли это с помощью функции apply?

PS: я нашел этот похожий вопрос , но прямого ответа на вопрос не было дано.

1 Ответ

1 голос
/ 01 марта 2020

Вот способ использования rep:

d <- a + rep(b, each = dim(a)[1])
all.equal(d[1,,], c1)
# TRUE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...