ベクトルを作る
c
引数を結合するc()
関数を使用する。
作成例
> vec.num <- c(1, 4, 7, 0)
> is.vector(vec.num)
[1] TRUE
> vec.char <- c("Tokyo", "Osaka", "Fukuoka")
> is.vector(vec.char)
[1] TRUE
:演算子
連続した数列を作るには:
演算子が使用できる。
> x <- 1:5; x
[1] 1 2 3 4 5
> y <- -3:2; y
[1] -3 -2 -1 0 1 2
数列を作る
数列を作るにはseq()
関数を用いることができます。
seq(from , to, by, length.out, along.with)
引数 | 説明 |
---|---|
from | 最初の数 |
to | 最後の数 |
by | 交差 |
length.out (length) | 数列の長さ。 |
along.with (along) | 指定したオブジェクトと同じ長さ数列を作る |
from
とto
に指定するだけで、簡単に等差数列のベクトルが作れます。
# 1から5まで増加する等差数列
> seq(1,5)
[1] 1 2 3 4 5
増加値・減少値はby
で指定し、デフォルトでは1
となっています。2つずつ増加させたければ、
> seq(1,10, by = 2)
[1] 1 3 5 7 9
となります。
また、length
を指定すると、その数分に分割したベクトルを生成します。
> seq(1, 20, length=7)
[1] 1.000000 4.166667 7.333333 10.500000 13.666667 16.833333 20.000000
along
は指定したベクトルと同じだけの要素数のベクトルを生成します。
> seq1 <- seq(1,10,by = 2)
> seq2 <- seq(10, by = 3, along=seq1)
> seq2
[1] 10 13 16 19 22
rep
要素を繰り返すベクトルを生成する
rep(x, times)
引数 | 説明 | 初期値 |
---|---|---|
x | 繰り返す要素 | |
times | 繰り返し回数 | 1 |
length.out | 生成するベクトル数の上限 | NA |
> rep(1:5, 3)
[1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
> rep(1:5, 3, length.out=12)
[1] 1 2 3 4 5 1 2 3 4 5 1 2
空ベクトルも作れる
> rep(NA, 10)
[1] NA NA NA NA NA NA NA NA NA NA
ベクトルの要素へのアクセスする
n番目の要素
> vec
[1] 0 6 12 18 24 30 36
> vec[2]
[1] 6
> vec[c(2, 4)]
[1] 6 18
> vec[3:6]
[1] 12 18 24 30
n番目以外の要素
> vec
[1] 0 6 12 18 24 30 36
> vec[-3]
[1] 0 6 18 24 30 36
> vec[c(-3, -5)]
[1] 0 6 18 30 36
> vec[-5:-3]
[1] 0 6 30 36
論理ベクトルによるインデックス指定
> vec
[1] 0 6 12 18 24 30 36
> vec[c(TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE)]
[1] 0 18 36
> vec[c(TRUE, FALSE)]
[1] 0 12 24 36
> vec[vec > 20]
[1] 24 30 36
> vec[vec < 15]
[1] 0 6 12
奇数番目の要素
1, 3, 5 … となる数列をseq()
関数で作りベクトルを指定する。
> vec <- 1:10
> vec[seq(1,length(vec),2)]
[1] 1 3 5 7 9
偶数番目の要素
2, 4, 6 … となる数列をseq()
関数で作りベクトルを指定する。
> vec <- 1:10
> vec[seq(2,length(vec),2)]
[1] 2 4 6 8 10
抽出する
文字列に一致するものを抽出する
> x <- c("Aomori", "Akita", "Iwate", "Yamagata", "Miyagi", "Fukushima")
> x[x %in% c("Aomori", "Miyagi")]
[1] "Aomori" "Miyagi"
文字列に一致しないものを抽出する
> x <- c("Aomori", "Akita", "Iwate", "Yamagata", "Miyagi", "Fukushima")
> x[!(x %in% c("Aomori", "Miyagi"))]
[1] "Akita" "Iwate" "Yamagata" "Fukushima"
要素を連結する
ベクトルの要素を連結して取り出すにはpaste()
関数で結合させる。
> a = c(1,2,3,4,5)
> paste(a, collapse=" ")
[1] "1 2 3 4 5"
ベクトルを並び替える
sort(x, decreasing, na.last)
引数 | 説明 | 初期値 |
---|---|---|
x | 並び替えたいベクトル | |
decreasing | 降順にするか指定する論理値 | FALSE |
na.last | NA値を最後に配置するか指定する論理値 | NA |
> c(3,4,2,1,5)
[1] 3 4 2 1 5
> sort(c(3,4,2,1,5))
[1] 1 2 3 4 5
因子型ベクトル
要素がfactorクラスのベクトル
数値ベクトルをカテゴリーごとに分類する
cut(x, breaks)
引数 | 説明 |
---|---|
x | 元の数値ベクトル |
breaks | 数値の場合は、分割する数。ベクトルの場合は、分割点。 |
数値ベクトルを四分位数で分割する
> cut(x, breaks = quantile(x))
ベクトルを結合する
- replace()
- c()
- append()
ベクトルどおしを結合する
ベクトルどおしを結合するのにも、c()
が使えます。引数に結合したいベクトルを指定します。
> vector.a <- c(1, 2, 3, 4, 5)
> vector.b <- c("a", "b", "c", "d", "e")
> vector.new <- c(vector.a, vector.b)
> vector.new
[1] "1" "2" "3" "4" "5" "a" "b" "c" "d" "e"