如何向矩阵列添加不同的值

时间:2013-04-26 12:03:53

标签: r matrix

通过使用回收来为矩阵中的每一行添加不同的值非常简单:

m <- matrix(1:12, ncol=4)
print(m + c(100, 200, 300))

但是如何为每列添加不同的值?例如,要获得以下结果:

101 204 307 410
102 205 308 411
103 206 309 412

3 个答案:

答案 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