数値演算
ベクトル同士の数値演算
同じ長さのベクトル同士の演算は、要素ごとにその演算が実行される。
1 2 3 4 |
> c(1, 2, 3) + c(4, 5, 6) [1] 5 7 9 > c(1, 2, 3) * c(4, 5, 6) [1] 4 10 18 |
ベクトルの長さが違う場合は、短い方の要素が循環して利用される。ただし長い方の要素数が短い方の要素数の整数倍になっていないと警告メッセージが出る。
1 2 3 4 5 6 7 |
> c(10, 20, 30, 40) + c(1, 2) [1] 11 22 31 42 > c(10, 20, 30, 40, 50) + c(1, 2) [1] 11 22 31 42 51 警告メッセージ: c(10, 20, 30, 40, 50) + c(1, 2) で: 長いオブジェクトの長さが短いオブジェクトの長さの倍数になっていません |
ベクトルの各要素への同じ演算の適用
要素数1のベクトルを用いると、ベクトルの全要素に同じ演算を施すことができる。
1 2 3 4 |
> c(1, 2, 3, 4) * 2 [1] 2 4 6 8 > 1 / c(2, 3, 4, 5) [1] 0.5000000 0.3333333 0.2500000 0.2000000 |
比較演算
数値演算と同じく、要素ごとの比較演算も可能。要素数が違う場合も同じように循環適用される。
結果は論理型ベクトルとして返される。
1 2 3 4 5 6 |
> c(1, 2, 3, 4, 5) == c(1, 1, 4, 4, 5) [1] TRUE FALSE FALSE TRUE TRUE > c(1, 1, 2, 2, 3, 3) == c(1, 2) [1] TRUE FALSE FALSE TRUE FALSE FALSE > -2:2 > 0 [1] FALSE FALSE FALSE TRUE TRUE |
数学関数
数学関数の引数にベクトルを使うと、各要素にその関数が適用される。
1 2 3 4 |
> abs(-2:2) [1] 2 1 0 1 2 > sqrt(1:4) [1] 1.000000 1.414214 1.732051 2.000000 |
集合演算
ベクトルを集合とみなして、集合演算を行うことができる。
1 2 3 4 5 6 7 8 9 10 11 12 |
> x <- c(-2, -1, 0, 1, 2) > y <- c(0, 1, 2, 3, 4) > union(x, y) # 和集合 [1] -2 -1 0 1 2 3 4 > intersect(x, y) # 積集合 [1] 0 1 2 > setdiff(x, y) # 差集合 [1] -2 -1 > setequal(x, y) # 集合として等しいか [1] FALSE > is.element(x, y) # xの各要素がyに含まれるか(x %in% y でもよい) [1] FALSE FALSE TRUE TRUE TRUE |