我们如何在 R 中添加两个具有不同行和列的矩阵?

How can we add two matrices with different rows and columns in R?

我有两个matrices:For例子

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

温度 1

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

temp2

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

我有两个行数相同但行数不同的矩阵。我想按如下方式添加这两个矩阵。我想知道是否有一种方法可以在没有 for 语句的情况下添加 R 并应用函数。

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

温度

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

这个例子很简单,但实际上我需要用一个100 * 100的矩阵和一个1 * 100的矩阵来做上面的事情。在这种情况下,耗时太长,所以我不想使用for语句和apply函数。

您可以使用 ?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, '+')

不幸的是,sweep 的帮助真的很难理解,但在本例中,您在 temp1 的第二个维度上应用带有参数“temp2”的函数“+”。

有关更多示例,请参阅:How to use the 'sweep' function