Chapter 4 Rを使ってみる
4.1 計算機としてのR
4.1.1 演習:R Scriptの作成
r_renshu
プロジェクトを開く。- 新たに
r_trial.R
という名前のRスクリプトを作成しよう。- スクリプトの作り方を忘れた人はセクション3.12を参照。
- 以下の演算をそのスクリプトに書いて実行してみよう。
4.1.3 かけ算・割り算
掛け算はアスタリスク(*)を使う。
## [1] 6
割り算はスラッシュ(/)を使う
## [1] 3
割り切れない場合はある程度まで桁が表示
## [1] 3.333333
4.1.4 練習問題:以下の演算をRを使ってやってみよう
- \(9179\div67\)
- \((256\times 43 + 54)\div 8\)
- \(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12\)
4.2 プログラミング言語としてのR
4.2.1 変数へのオブジェクトの代入
x や yという「入れ物」に数字を代入する。
## [1] 11
オブジェクトは「上書き」できることに注意。
以下の例では、x
に3を代入した後x+1
という演算をまた、x
に代入している。
それによって、x
は4となる。
## [1] 4
4.2.2 プログラミング:繰り返し
同じような作業を繰り返させる。
以下のケースでは、\(i\)というオブジェクトに1から10までを順番に入れて、それぞれのターンにおいて\(i+1\)という数字をprint()
という関数でコンソールに表示させている。つまり、同じ作業を10回中身を変えてやりたいときに、print(1+1), print(2+1)...
というように、何度も同じ文を書く必要がない。
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
## [1] 11
4.2.3 練習問題:ループを用いた計算
1から50までを合計する繰り返し文を書いてみよう。
\(1+2+3+\cdots+50=\)
ヒント:goukei
というオブジェクトを用意して、ループの前に0
を代入してみよう。
4.2.4 プログラミング:if文
もしある命題が真ならどうする、偽ならどうするというifの条件によって異なる処理を行うif文もプログラミングの基本だ。Rでも簡単に実装できる。
## [1] 8
x <- -4
# もしxが0より大きいなら、wに3+xを代入するという処理を実行する。
if(x > 0){
w = 3 + x
}
# 上の処理は実行されていないのでwは定義されず、"not found"というエラーが出る。
print(w)
## Error in eval(expr, envir, enclos): object 'w' not found
もし命題が偽だった場合の処理も指定できる。
x <- -5
# もしxが0より大きければ3を足してvに代入、
# そうでなければ3を引いてvに代入。
if(x > 0){
v = x + 3
}else{
v = x - 3
}
print(v)
## [1] -8
4.3 データ型
Rのオブジェクトにはいくつかの「型」がある。そのオブジェクトに格納されている要素がどういう性質を持つか?が定義される。これを、データ型と呼ぶ。 たとえば、数字なのか文字列なのか?で扱いが異なる。
## [1] "numeric"
## [1] "character"
4.4 ベクトル
順序のある要素の集まりをベクトルと呼ぶ。
c()
関数で作成することができる。
## [1] 1 2 3 4 5
ベクトルは、文字や論理値など取ることができる。
## [1] "musashi" "nerima" "ekoda"
## [1] FALSE TRUE TRUE FALSE
4.4.1 ベクトルの型
異なるデータ型を同じベクトルに混ぜることはできない。 混ぜると、一定のルールに基づいてある型が他の型より優先される
## [1] 0 1 1
## [1] "FALSE" "1" "musashi"
4.4.4 ベクトル:同じ数値が並ぶベクトル
同じ数値がたくさんあるベクトルを作りたい場合はrep()
関数を使う
## [1] 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
## [41] 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
## [81] 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
本当に100個出てるか?
ベクトルの要素の数を数える関数はlength
## [1] 100
4.5 リスト
様々なベクトルやデータなどのオブジェクトをひとまとめにして扱うことができるのがリスト
リストはlist()
関数で作成する
# aというオブジェクトに、文字列ベクトル、数値ベクトル、データが混ざって入っている。
# カンマ, の後に改行しているが、listのかっこが閉じるまではひとまとまりだと扱われる。
a <- list(
c("a", "b", NA, "d"),
num = c(3, 1.1, 5),
data = head(mtcars, 1))
a
## [[1]]
## [1] "a" "b" NA "d"
##
## $num
## [1] 3.0 1.1 5.0
##
## $data
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21 6 160 110 3.9 2.62 16.46 0 1 4 4