プログラミング言語としてのR 情報知能学科 白井 英俊
初めに この文書は、完全を目指していない 書いてあることは不完全で、ひょっとしたら間違いがあるかもしれない 必ず試し、分からなければ調べよ この文書は、高階(2008)「プログラミングR」オーム社、に基づく Rはウェブ上に豊富な資料がある。ウェブを有効利用せよ Rはhelpが充実している。そのために英語に慣れよう!
変数とオブジェクト Rの変数は、Rubyと同様、「どんなオブジェクトでも格納できる箱のようなもの」 例: 変数名 <- オブジェクト 例: 変数名 <- オブジェクト 変数には型の宣言が不要。オブジェクト自体が型を持っている(Rubyと同じ) オブジェクトの型を『クラス』という。クラスを調べるには、 例: class(オブジェクト) オブジェクトに属性を追加できる: 例: attr(オブジェクト名, 属性名) <- 属性値
実行文 代入文のように何かを『計算・実行する』文は、値を持つ 文は一行に一つ、もしくは;で区切って一行に複数の文が書ける(Rubyと同じ) 一つの文は複数行にまたがってもよい {と}で複数の文をまとめたものを「ブロック」という。一つのブロックは、一つの文相当となる。
関数 関数はfunctionを使う。基本的に、関数には名前がない。 関数を変数に代入すると、その変数が「関数名」として働く。 例: fact <- function(x) { if (x > 1) { return(x * fact(x-1)) } else { return(1) } } > fact(10)
データ型と型変換 Rの基本的な型 数値型 numeric (基本的に数はすべてこれ) 論理型 logical: TRUE/FALSE 欠損値: NA (Not Applicable) 文字型 character: 文字列の前後を"で囲む 因子型 factor: 作成するには関数factorを用いる 複素数型 complex: x+yi 型の変換 as.numeric, as.character, as.logical, as.complex
データの集合 集合的なデータ構造は5種類 ベクトル: 同じ型のデータの1次元の集まり 例: x <- c(1,2,3) ベクトル: 同じ型のデータの1次元の集まり 例: x <- c(1,2,3) 行列: 同じ型のデータの2次元の集まり 例: y <- matrix(0, nrow=3, ncol=3) 配列: 同じ型のデータの3次元以上の集まり 例: z <- array(1:18, dim=c(3,3,2)) リスト: 異なる型のデータの1次元の集まり 例: w <- list("sentence", list("subj"), list("v", list("obj"))) データフレーム:任意型のベクトルの表形式の集まり。データ分析の関数が用いる
集合データの要素の参照方法 集合データの要素の参照方法 (1) 単純参照: 要素番号を指定して、個別の要素を取り出す。例: x[2], y[1,3] (2) 行列名による参照 ベクトルの場合 names、行列の場合、rownames, colnamesで行列名を与え、y[“col01”,”row01”]で要素が取り出せる データフレームの場合、$で列全体が取り出せる 例:陸上$走り幅跳び
集合データの要素参照(続) 範囲参照 例: x[2:3] x[c(2,3)] 条件参照 1)除外条件: 例: x[-2] :2番目の要素以外 注意:リストの要素参照で、単純参照をすると「部分リスト」が返る。要素そのものを取り出す場合は、以下のようにする: w[ [2] ]
演算子 四則演算 x + y x – y x * y x / y x %/% y xをyで割った商 x %% y xをyで割った余り
演算子 比較: x==y x != y 論理: ! x x > y x >= y x < y x <= y
制御構造 If文 (1) if (条件式) 真のときに実行する文(ブロック) 繰り返し:breakとnextが使える else 偽のときに実行する文(ブロック) 繰り返し:breakとnextが使える (1) for (変数 in 集合) 文(ブロック) (2) while (条件式) 実行文(ブロック) (3) repeat 実行文(ブロック)
算術関数、文字列関数 各自調べよ
ベクトル演算型プログラミング マッピング:入力の集合の各要素について、同一の処理を行い、それらの結果を結合した出力を作る sapply(xs, f) : xsの各要素に対し関数fを適用し、結果のベクトルを返す lapply(xs,f) : xsの各要素に対し関数fを適用し、結果のリストを返す rapply(xs,f) : xsの各要素に対し「再帰的」に関数fを適用し、結果のリストを返す などなど