2013-04-26 7 views
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 

ответ

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 
1

Я не могу себе представить, я закончу печатаю это, прежде чем кто Ninjas меня, но:

метод один:

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

метод два :

addmat<- matrix(rep(1:4,each=4),nr=4)*100 
m + addmat 
1

Если вектор, содержащий различные значения имеет длину egual или кратна числу столбца 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 
Смежные вопросы