Rで行または列を定数倍する

 

> (a <- matrix(1:6 , nrow = 2, byrow = T))
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6


# 1行目を2倍、2行目を3倍する
> diag(2:3) %*% a
     [,1] [,2] [,3]
[1,]    2    4    6
[2,]   12   15   18


# 1列目を2倍、2列目を3倍、3列目を4倍する
> a %*% diag(2:4)
     [,1] [,2] [,3]
[1,]    2    6   12
[2,]    8   15   24


# sweep関数を使った方法
> sweep(a, 1, 2:3, FUN = "*")
     [,1] [,2] [,3]
[1,]    2    4    6
[2,]   12   15   18

> sweep(a, 2, 2:4, FUN = "*")
     [,1] [,2] [,3]
[1,]    2    6   12
[2,]    8   15   24