学習day4
R言語を学習し始める。
Rコマンドの中には処理が重く、実行に時間がかかるものがある。
その場合は[Ctrl]+[C]を入力する。
数列は[:]で記入する。
例えば、1:6は[1 2 3 4 5 6]の数列を表す。
変数は[<-]で代入する。
オブジェクトが作られた際は、RStudioの右上「Environment」ペインに表示される。
ls関数[ls()]を使えば、すでに使っているオブジェクト名がわかる
2つの長さが異なるベクトルの間で要素ごとの演算を実行するとき、Rは短いベクトルを反復的に使う。
数列の内積は[%*%]演算子、直積は[%o%]演算子で計算できる。
◎[%*%]演算子
die <- 1:6 die %*% die 91 ↑この時、dieオブジェクト[1 2 3 4 5 6]の各列を[1 2 3 4 5 6]で掛け算している。 |
1 × 1 = 1
2 × 2 = 4
3 × 3 = 9
4 × 4 = 16
5 × 5 = 25
6 × 6 = 36
上記を全て加算している。
◎[%o%]演算子
die <- 1:6 die %o% die |
[,1] | [,2] | [,3] | [,4] | [,5] | [,6] | |
[1,] | 1 | 2 | 3 | 4 | 5 | 6 |
[2,] | 2 | 4 | 6 | 8 | 10 | 12 |
[3,] | 3 | 6 | 9 | 12 | 15 | 18 |
[4,] | 4 | 8 | 12 | 16 | 20 | 24 |
[5,] | 5 | 10 | 15 | 20 | 25 | 30 |
[6,] | 6 | 12 | 18 | 24 | 30 | 36 |
各行列で要素を掛け算している。
sample関数は、ベクトルからsize個の要素を返す。
sample(1:6, size = 1) 2 ## 1~6の数列の中から、ランダムで1個取り出す |
しかし、以下の場合は、同じ数字が2回目に出ることはない。
sample(1:6, size = 2) 2 5 ## sampleは、デフォルトでは最初に返した値は元に戻さないで次の要素を返す |
従って、元に戻すsampleの記述は以下
sample(1:6, size = 2, replace = TRUE) 5 5 |
独自関数を作るには[function()]関数を使う。
my_function <- function{} |
後ろの波カッコの間に配置されたRコードを元に仮数を作る。
サイコロのコードを関数にするには、以下を記述
roll <- function(){ die <- 1:6 dice <- sample(die, size=2, replace=TRUE) sum(dice) } |
引数
roll2 <- function(bones){ dice <- sample(bones, size=2, replace=TRUE) sum(dice) }
roll2(bones = 1:4) 3 |
roll2を呼び出すときにbonesの引数の値を渡さなければエラーになってしまうことに注意。
(疑問だが、roll2(bones = 1:4)だとエラーが起きてしまう。引数ではオブジェクトの定義が無理なのか・・?)