・お題:サンプルデータを作成する際に、適当にベクトルを作成したいことがある。私は覚えが悪いので毎回ググっているが、面倒なのでメモしておきたい。
・決められた文字(列)からベクトルを作成する。
・ABCDABCDにする。
> rep(c("A", "B", "C", "D"), times = 2)
[1] "A" "B" "C" "D" "A" "B" "C" "D"
・AABBCCDDにする。
> rep(c("A", "B", "C", "D"), each = 2)
[1] "A" "A" "B" "B" "C" "C" "D" "D"
・ABBCCCDDDDにする。
> rep(c("A", "B", "C", "D"), times = c(1, 2, 3, 4))
[1] "A" "B" "B" "C" "C" "C" "D" "D" "D" "D"
・ランダムにしてみる。シードを設定する。
> set.seed(12)
・ABCDをランダムに並び替える。
> sample(c("A", "B", "C", "D"))
[1] "B" "D" "C" "A"
> sample(c("A", "B", "C", "D"), size = 4, replace = FALSE)
[1] "C" "B" "A" "D"
・重複を許可する。
> sample(c("A", "B", "C", "D"), size = 4, replace = TRUE)
[1] "D" "B" "D" "C"
> sample(c("A", "B", "C", "D"), size = 10, replace = TRUE)
[1] "B" "A" "B" "A" "B" "D" "B" "B" "C" "D"
・それぞれの登場頻度を指定する。
> sample(c("A", "B", "C", "D"), size = 10, replace = TRUE, prob = c(1, 2, 3, 4))
[1] "D" "B" "D" "D" "C" "D" "C" "C" "D" "B"
・数字のベクトルを作ってみる。
・公差1の等差数列。
> 1:10
[1] 1 2 3 4 5 6 7 8 9 10
> 1.1:10
[1] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1
・seq関数の方がいろいろ指定できる。
> seq(1, 10)
[1] 1 2 3 4 5 6 7 8 9 10
・公差2の等差数列
> seq(1, 10, by = 2)
[1] 1 3 5 7 9
・指定した区間を指定した数の数値で等差数列にする。
> seq(1, 5, length = 9)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
・等比数列
> 2**seq(1, 10)
[1] 2 4 8 16 32 64 128 256 512 1024
・乱数の数列を発生させてみる。シードを設定する。
> set.seed(1)
・一様乱数
> runif(5, min = -10, max = 10)
[1] -4.689827 -2.557522 1.457067 8.164156 -5.966361
・正規分布の乱数
> rnorm(5, mean = 0, sd = 5)
[1] 6.362147 2.073207 -7.699750 -4.642835 -1.473602
・整数にしたければ、as.integerにする。
> as.integer(rnorm(5, mean = 0, sd = 5))
[1] -3 0 -4 7 1
・ちなみに、as.integerの性質は以下のような感じ。あくまで整数部分をとって来るっぽい。
> as.integer(c(-2.3, -1, -0.1, 0, 0.1, 1, 1.4))
[1] -2 -1 0 0 0 1 1
・ベクトルをくっつける。
> c( c(1, 2, 3), c(4, 5, 6), c(7, 8, 9) )
[1] 1 2 3 4 5 6 7 8 9
・append関数でくっつけることもできる。
> append(c(1, 2, 3), c(4, 5, 6))
[1] 1 2 3 4 5 6
・append関数では、最初のベクトルのどの要素の後に後のベクトルをくっつけるか指定できる。
> append(c(1, 2, 3), c(4, 5, 6), after = 0)
[1] 4 5 6 1 2 3
> append(c(1, 2, 3), c(4, 5, 6), after = 1)
[1] 1 4 5 6 2 3
> append(c(1, 2, 3), c(4, 5, 6), after = 2)
[1] 1 2 4 5 6 3
> append(c(1, 2, 3), c(4, 5, 6), after = 3)
[1] 1 2 3 4 5 6
> append(c(1, 2, 3), c(4, 5, 6), after = 4)
[1] 1 2 3 4 5 6
おわり。