以下では要素に対する掛算の例であるが,足し算,引き算,わり算,べき乗など何でも同じである。
具体例: 行列 x <- matrix(1:12, byrow=TRUE, nc=3) > x [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 [4,] 10 11 12 の各列をそれぞれ,2, 5, 10 倍したい プログラム例 1: > x <- matrix(1:12, byrow=TRUE, nc=3) > f <- c(2, 5, 10) > for (i in 1:3) { # for 文を使うのは R らしくない + x[,i] <- x[,i]*f[i] + } > x [,1] [,2] [,3] [1,] 2 10 30 [2,] 8 25 60 [3,] 14 40 90 [4,] 20 55 120 プログラム例 2: > x <- matrix(1:12, byrow=TRUE, nc=3) > f <- c(2, 5, 10) > ff <- matrix(f, byrow=TRUE, nrow=4, ncol=3) # x と同じ大きさの行列を作る(メモリーの無駄だと思う) > ff [,1] [,2] [,3] [1,] 2 5 10 [2,] 2 5 10 [3,] 2 5 10 [4,] 2 5 10 > x <- x*ff > x [,1] [,2] [,3] [1,] 2 10 30 [2,] 8 25 60 [3,] 14 40 90 [4,] 20 55 120 プログラム例 3: > x <- matrix(1:12, byrow=TRUE, nc=3) > f <- c(2, 5, 10) > x <- t(t(x)*f) # 転置行列にすれば,倍数ベクトルはリサイクルされる。演算後に結果を転地してもとのサイズに戻す > x # R らしいかもしれない [,1] [,2] [,3] [1,] 2 10 30 [2,] 8 25 60 [3,] 14 40 90 [4,] 20 55 120 各行を定数ベクトル倍するときには転置無用 > x <- matrix(1:12, byrow=TRUE, nc=3) > x*c(2, 3, 5, 8) # 各行を,2, 3, 5, 8 倍する [,1] [,2] [,3] [1,] 2 4 6 [2,] 12 15 18 [3,] 35 40 45 [4,] 80 88 96