我们如何在 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
我有两个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