我对R比较新,所以我觉得我的问题比较简单。如果你有一个矩阵,m。
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
我想将行t的值添加到矩阵m。
[,1] [,2] [,3]
[1,] 2 3 4
产生新的矩阵p ...
3 5 7
6 8 10
9 11 13
我希望有一种通用的方法可以做到这一点,而不是像m [1,] + 2那样做。谢谢你的帮助和时间。
答案 0 :(得分:6)
你可以试试这个
m1 + m2[col(m1)]
或者
sweep(m1, 2, m2, `+`)
m1 <- matrix(1:9, 3, 3, byrow=TRUE)
m2 <- t(2:4)
答案 1 :(得分:1)
如果您的行是矢量作为输入,您也可以尝试这种回收方式:
m1 = matrix(1:9, 3, 3, byrow=TRUE)
m2 = 2:4
t(t(m1) + m2)
# [,1] [,2] [,3]
#[1,] 3 5 7
#[2,] 6 8 10
#[3,] 9 11 13
答案 2 :(得分:0)
如果您正在寻找替代方案,您还可以使用下面的方法将行t转换为矩阵,这告诉R重复该行,但是m有多行:
t <- matrix(rep(c(2,3,4), length(m[,1])), nrow = 3, ncol=3, byrow = TRUE)
然后
new_m <- m+t
原始m的数据:
m <- matrix(c(1, 4, 7, 2, 5, 8, 3, 6, 9), nrow = 3, ncol = 3)