第1講 - R言語の仕様とRStudioの使い方
(Press ?
for help, n
and p
for next and previous slide)
村田 昇
例えば以下のような計算を行うことができる
#' 一般的な数式を入力すれば計算機として使える
#' "#" 以降はコメントとして無視される
1 + 2 + 3 + 4 # 空白は無視される
sin(pi/3) / cos(pi/3) # tan(pi/3) になるはず
コンソール上で終了を指示する以下のコマンドを入力すれば R を終了させることができる
#' R の終了には q() または quit() を用いる
q()
同一ファイル内でプログラムと文書の記述も可能
(本講義では扱わない)
help()
や ?
などを利用終了時にコンソールに以下のメッセージが表示される場合がある
> q()
Save workspace image? [y/n/c]:
y
を入力: セーブする (yesの略)n
を入力: セーブしない (noの略)c
を入力: Rの終了をキャンセルする (cancelの略)加減乗除 | +, -, *, / |
羃乗 | ^ または ** |
三角関数 | sin(), cos(), tan() |
逆三角関数 | asin(), acos(), atan() |
指数関数 | exp() |
対数関数 | log(), log10(), log2() |
双曲線関数 | sinh(), cosh(), tanh() |
平方根 | sqrt() |
絶対値 | abs() |
コンソール上での計算例
#' 与えられた式の計算をコンソール上で実行してみよう
#' 1 x 2 + 3^2 の計算
1 * 2 + 3^2
#' sin(2π) の計算
sin(2*pi)
#' √2 + |-0.6| の計算
sqrt(2) + abs(-0.6)
[1] 11 [1] -2.449294e-16 [1] 2.014214
基本的な操作に慣れよう
関数の呼び出し方 (関数名を f
とする)
f(arg1 = value1, arg2 = value2) # 擬似コード
#' arg1, arg2 は引数の名前,value1, value2 は引数に渡す値を表す
f(value1, value2) # 上と同値.順序に注意
help(関数名)
または ?関数名
で
ヘルプが表示される正弦関数の計算
#' 正弦関数(引数が1つ)の計算例
sin(x = pi/2)
sin(pi/2) # 引数名は省略でき,前の行とこの行は同じ結果になる
対数関数の計算
#' 対数関数(引数が2つ)の計算例
#' 以下は擬似コード.a, b を適当な数値に置き換えて実行しなさい
log(a, b) # 底を b とする a の対数
log(x = a, base = b) #上と同値
log(base = b, x = a) #上と同値(引数名があれば順序は自由に変えられる)
log(b, a) # = log(x=b,base=a) (引数名がなければ規定の順序で解釈される)
log(a) # 自然対数 =log(a,base=exp(1))
help()
(使い方や例の表示)example()
(例を実際に実行してくれる)help.search()
(キーワード検索)ヘルプの使い方
#' 関数 log() に関するヘルプの例
help(log) # Helpタブに結果は表示される
?log # 上と同値
example(log) # ヘルプ内の例を実行
help.search("log") # "log"に関連する項目は?
??"log" # 上と同値
代入操作の例
#' 数値を変数 foo に代入する
(foo <- 3) # foo <- 3; print(foo) と等価
#' 変数 foo を用いて計算し,結果を bar に代入する
bar <- sin(2/3*pi) + cos(foo * pi/4) # 計算結果は表示されない
#' 変数 bar の内容を表示する
print(bar)
[1] 3 [1] 0.1589186
c, q, t, C, D, F, I, T
には注意が必要install.packages()
を利用型の名称 | 役割 | 例 |
---|---|---|
numeric |
(広義の)実数を表す | 1, pi, NaN |
complex |
複素数を表す | 1i, 3-4i |
character |
文字列を表す | "foo", "Hello World!" |
logical |
論理値(真偽)を表す | TRUE, FALSE, 3<4, NA |
構造の名称 | 役割 |
---|---|
vector |
1次元配列 (ベクトル) |
matrix |
2次元配列 (行列) |
array |
多次元配列 |
data.frame (tibble ) |
表形式のデータ集合 |
list |
異なるデータ集合の集合 |
ベクトルの例
数値 (実数や複素数)
10.8 11.6 13.0 11.4 … 文字列 (’ や “ で囲まれた文字.”foo“,”bar“など)
“this” “that” “apple” “orange” … 論理値 (
TRUE
,FALSE
)
TRUE
TRUE
FALSE
TRUE
…
c()
を用いて作成する:
や関数 seq()
を利用する (等差数列)rep()
を利用する (数列を繰り返す)ベクトルの作成の例
x <- c(1,-2,3,-4) # 数値のベクトル
y <- c("Alice","Bob","Cathy","David") # 文字列のベクトル
z <- c(TRUE,FALSE,TRUE,FALSE) # 論理値のベクトル
1:5 # c(1,2,3,4,5) と同じ.seq(1,5,by=1) としても良い
rep(1:2, times=3) # c(1,2,1,2,1,2) と同じ
rep(1:2, each=3) # c(1,1,1,2,2,2) と同じ
[]
を用いて指定する
要素の選択の例
x[2] # xの第2要素 (ベクトルの添え字は1から始まる)
y[c(1,3,4)] # 複数の要素 = c(y[1],y[3],y[4])
データフレームの例
ある小学校の1年生の身長・体重・性別・血液型のデータ
名前 身長 [cm] 体重 [kg] 性別 血液型 太郎 108 19 男 B 花子 116 21 女 O 次郎 130 25 男 AB … … … … …
パッケージ集の利用には以下が必要
#' 最初に一度だけ以下のいずれかを実行しておく
#' - Package タブから tidyverse をインストール
#' - コンソール上で次のコマンドを実行 'install.packages("tidyverse")'
#' tidyverse パッケージの読み込み
library(tidyverse)
tibble::tibble()
)dplyr::bind_cols()
)データフレームの作成の例
#' 同じ長さのベクトル(関数 base::c() で作成)を並べる (関数 tibble::tibble())
#' (... <- ...) は代入した結果を表示
(foo <- tibble(one = c(1,2,3), two = c("AB","CD","EF")))
(bar <- tibble(three = c("x","y","z"), four = c(0.9,0.5,-0.3)))
#' データフレームを結合する (関数 dplyr::bind_cols())
(baz <- bind_cols(foo, bar)) # bind columns
要素の選択の例
z <- tibble(one = c(1,2,3),
two = c("AB","CD","EF"),
three = 6:8)
z[1,2] # 1行2列の要素を選択
z[-c(1,3),] # 1,3行を除外
z[c(TRUE,FALSE,TRUE),] # 1,3行を選択
z[,"two"] # 列名"two"を選択(1列のデータフレームになる)
z["two"] # 上記と同様の結果
z[,c("one","three")] # 列名"one"と"three"を選択(データフレームになる)
z[c("one","three")] # 上記と同様の結果
z[["two"]] # 列名"two"のベクトルを選択(1列の場合しか使えない)
z$two # 上記と同様の結果
次の表に対応するデータフレームを作成しなさい
name | math | phys | chem | bio |
---|---|---|---|---|
Alice | 90 | 25 | 65 | 70 |
Bob | 80 | 50 | 100 | 50 |
Carol | 70 | 75 | 70 | 30 |
Dave | 60 | 100 | 40 | 80 |
Eve | 50 | 80 | 75 | 100 |