プログラミング言語としての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) 行列: 同じ型のデータの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番目の要素以外 2) 条件式: 例: x[ x > 1]: 1より大きい要素 注意:リストの要素参照で、単純参照をすると「部分リ スト」が返る。要素そのものを取り出す場合は、以下 のようにする: w[ [2] ] 演算子 • 四則演算 x+y x–y x*y x/y x %/% y x %% y x^y 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 (条件式) 真のときに実行する文(ブロック) (2) if (条件式) 真のときに実行する文(ブロック) 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を適用し、結果のリストを返す – などなど
© Copyright 2024 ExpyDoc