Как мы можем добавить две матрицы с разными строками и столбцами в R? - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть две матрицы: например,

temp1 <- matrix(c(1,2,3,4,5,6),2,3,byrow = T)
temp2 <- matrix(c(7,8,9),1,3,byrow = T)

temp1

       [,1] [,2] [,3]
 [1,]    1    2    3
 [2,]    4    5    6

temp2

       [,1] [,2] [,3]
 [1,]    7    8    9

У меня есть две матрицы с одинаковым количеством строк,но с разными рядами.Я хотел бы добавить эти две матрицы следующим образом.Интересно, есть ли способ добавить R без операторов for и применить функции.

temp <- do.call(rbind,lapply(1:2,function(x){temp[x,]+temp2}))

temp

       [,1] [,2] [,3]
 [1,]    8   10   12
 [2,]   11   13   15

Этот пример прост, но на практике мне нужно сделать вышес матрицей 100 * 100 и матрицей 1 * 100.В этом случае это занимает слишком много времени, поэтому я не хочу использовать операторы и применять функции.

1 Ответ

0 голосов
/ 27 сентября 2018

Вы можете использовать ?sweep:

temp1 <- matrix(c(1,2,3,4,5,6),2,3,byrow = T)
temp2 <- matrix(c(7,8,9),1,3,byrow = T)
sweep(temp1, 2, temp2, '+')

К сожалению, справку по развертке действительно трудно понять, но в этом примере вы применяете функцию ´ + ´ с аргументом ´temp2´ вдоль второго измерениятемп1.

Дополнительные примеры см .: Как использовать функцию «развертки»

...