通过使用回收来为矩阵中的每一行添加不同的值非常简单:
m <- matrix(1:12, ncol=4)
print(m + c(100, 200, 300))
但是如何为每列添加不同的值?例如,要获得以下结果:
101 204 307 410
102 205 308 411
103 206 309 412
答案 0 :(得分:1)
我无法想象在有人忍着我之前我会完成输入,但是:
方法一:
for (j in 1:4) m[,j]<-m[,j]+100*j
方法二:
addmat<- matrix(rep(1:4,each=4),nr=4)*100
m + addmat
答案 1 :(得分:1)
您可以使用转置执行相同的操作:
t(t(m) + c(100,200,300,400))
[,1] [,2] [,3] [,4]
[1,] 101 204 307 410
[2,] 102 205 308 411
[3,] 103 206 309 412
答案 2 :(得分:1)
如果包含不同值的向量的长度与m
列的长度相同或多倍,则可以执行此操作
> mapply(`+`, as.data.frame(m),c(100, 200, 300, 400))
V1 V2 V3 V4
[1,] 101 204 307 410
[2,] 102 205 308 411
[3,] 103 206 309 412