我有两个矩阵:例如
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
我有两个行数相同但行数不同的矩阵。我想将这两个矩阵添加如下。我想知道是否有一种不用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矩阵进行上述操作。在这种情况下,它花费的时间太长,因此我不想用于语句和应用函数。
答案 0 :(得分:2)
您可以使用?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, '+')
不幸的是,对清除的帮助确实很难理解,但是在此示例中,沿着temp1的第二维应用了带有参数“ temp2”的函数“ +”。
有关更多示例,请参见:How to use the 'sweep' function