0

使用循环向矩阵中的每一行添加不同的值非常简单:

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

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

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

3 回答 3

1

我无法想象我会在有人忍者之前完成输入,但是:

方法一:

for (j in 1:4) m[,j]<-m[,j]+100*j

方法二:

addmat<-  matrix(rep(1:4,each=4),nr=4)*100
m + addmat
于 2013-04-26T12:11:28.707 回答
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
于 2013-04-26T12:16:41.497 回答
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
于 2013-04-26T12:17:45.520 回答