Я так понимаю, вы это имеете в виду?
t(t(m) ^ c(.1, .1, .1, .3, .4))
#[,1] [,2] [,3] [,4] [,5]
#[1,] 1 1.071773 1.116123 1.515717 1.903654
#[2,] 1 1.071773 1.116123 1.515717 1.903654
, где t(m)
возвращает транспонирование matrix
m
.
Дальнейшее объяснение
Вы попали в «ловушку рециркуляции», где R автоматически (и неявно) перерабатывает значения, чтобы соответствующим образом соответствовать размерам векторов в векторизованной операции (здесь возведение в степень). То, что вы делаете, по сути, следующее
as.numeric(m)^c(.1, .1, .1, .3, .4)
Написано так, как становится ясно, как R повторяет вектор c(.1, .1, .1, .3, .4)
, чтобы соответствовать длине вектора as.numeric(m)
. Recast as matrix
воспроизводит ваши исходные результаты.
matrix(as.numeric(m)^c(.1, .1, .1, .3, .4), nrow = 2)
# [,1] [,2] [,3] [,4] [,5]
#[1,] 1 1.071773 1.551846 1.148698 1.620657
#[2,] 1 1.231144 1.116123 1.148698 1.903654