使用循环向矩阵中的每一行添加不同的值非常简单:
m <- matrix(1:12, ncol=4)
print(m + c(100, 200, 300))
但是如何为每一列添加不同的值呢?例如,要获得以下结果:
101 204 307 410
102 205 308 411
103 206 309 412
我无法想象我会在有人忍者之前完成输入,但是:
方法一:
for (j in 1:4) m[,j]<-m[,j]+100*j
方法二:
addmat<- matrix(rep(1:4,each=4),nr=4)*100
m + addmat
你可以对转置做同样的事情:
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
如果包含不同值的向量的长度等于或多于列数,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