いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【R】ベクトルを作りたい

・お題:サンプルデータを作成する際に、適当にベクトルを作成したいことがある。私は覚えが悪いので毎回ググっているが、面倒なのでメモしておきたい。

 

・決められた文字(列)からベクトルを作成する。

・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

 

おわり。