R言語プログラミング: データ型・操作
統計解析・データマイニング言語である R言語のデータ型・操作をソースコードを用い紹介する。記載しているソースは、R Console上や EclipseでR-Scriptとして、そのまま実行可能である。
R Consoleでの実行例 (Rのインストール・環境設定はこちら)
EclipseでのR-Scriptとしての実行例 (RをEclipseで実行するための方法はこちら)
R のデータ型
Rのデータ型には integer(整数), numerical(実数), complex(複素数), character(文字), logical(論理)、および、Vector(ベクトル), matrix(マトリクス), data.frame(データフレーム), array(配列), list(リスト)がある。以下にそれぞれ説明する。
Vector
1次元(1行または1列)のデータセットを Vector (ベクトル)と呼ぶ。
price <- c(105,202,155,91) # price object に vector dataを代入 productname <- c("A", "B", "C", "D") # productname object に vector dataを代入 names(price)<- productname # price のラベルを productnameにする price # price を出力 price^2 # priceの2乗を出力 mean(price) #price vector の要素の平均を出力 round(mean(price),0) # price vector の要素の平均の小数点以下を四捨五入 length(price) # price vector の要素数を出力
実行結果
> price <- c(105,202,155,91) # price object に vector dataを代入 > productname <- c("A", "B", "C", "D") # productname object に vector dataを代入 > names(price)<- productname # price のラベルを productnameにする > > price # price を出力 A B C D 105 202 155 91 > > price^2 # priceの2乗を出力 A B C D 11025 40804 24025 8281 > mean(price) #price vector の要素の平均を出力 [1] 138.25 > round(mean(price),0) # price vector の要素の平均の小数点以下を四捨五入 [1] 138.2 > length(price) # price vector の要素数を出力 [1] 4
Matrix
表・行列の表現として、R言語には Matrix(マトリクス) と Data Frame(データフレーム)が用意されている。対象が全て数値で数値演算を扱う場合には Matrix を用いる。
price <- matrix(0,2,4) # 要素が 0 の 2行4列の行列を定義する price # 行列 price を表示 productname <- c("A", "B", "C", "D") cityname <- c("Tokyo","London") colnames(price)<- productname # price のラベルを productnameにする rownames(price)<- cityname # price のラベルを productnameにする price[1,] <- c(105,202,155,91) # 1 行目に Vector を 入力 price[2,] <- c(107,199,154,99) # 2 行目に Vector を 入力 price # 行列 price を表示 dim(price) # price の次元(サイズ)を求める nrow(price) # price の行数を求める ncol(price) # price の列数を求める (price[2,3] <- 156) # 数値を代入してその結果を出力する
実行結果
>price <- matrix(0,2,4) # 要素が 0 の 2行4列の行列を定義する > price # 行列 price を表示 [,1] [,2] [,3] [,4] [1,] 0 0 0 0 [2,] 0 0 0 0 > > productname <- c("A", "B", "C", "D") > cityname <- c("Tokyo","London") > colnames(price)<- productname # price のラベルを productnameにする > rownames(price)<- cityname # price のラベルを citynameにする > price[1,] <- c(105,202,155,91) # 1 行目に Vector を 入力 > price[2,] <- c(107,199,154,99) # 2 行目に Vector を 入力 > price # 行列 price を表示 A B C D Tokyo 105 202 155 91 London 107 199 154 99 > > dim(price) # price の次元を求める [1] 2 4 > nrow(price) # price の行数を求める [1] 2 > ncol(price) # price の列数を求める [1] 4 > (price[2,3] <- 156) # 数値を代入してその結果を出力する [1] 156
Data Frame
表・行列形式の中に、数字と文字列が混在しているときには Data Frame (データフレーム)が用いられる。Data frameは関数 data.frameを用いて作成することができる。Data Frame から matrixへの変換は as.matrix を用いる。逆に、Matrix から Data Frameに変換は関数 as.data.frame を用いる。
df <- data.frame(cbind(LETTERS[1:4], 3:0)) # cbindは同じ長さのデータを列単位に結合する関数 colnames(df) <- c("Team","Score") # 列の名前をつける df # 出力 as.matrix(df) # data.frame df を matrix に変換
実行結果
> df <- data.frame(cbind(LETTERS[1:4], 3:0)) # cbindは同じ長さのデータを列単位に結合する関数 > colnames(df) <- c("Team","Score") # 列の名前をつける > df # 出力 Team Score 1 A 3 2 B 2 3 C 1 4 D 0 > > as.matrix(df) # data.frame df を matrix に変換 Team Score [1,] "A" "3" [2,] "B" "2" [3,] "C" "1" [4,] "D" "0"
Array
配列。
ar <- array(1:30, c(2,5,3)) #2 × 5 × 3 の配列に、1 から 30までの値を入れ 作成する。 ar # 出力
実行結果
> ar <- array(1:30, c(2,5,3)) #2 × 5 × 3 の配列に、1 から 30までの値を入れ 作成する。 > ar # 出力 , , 1 [,1] [,2] [,3] [,4] [,5] [1,] 1 3 5 7 9 [2,] 2 4 6 8 10 , , 2 [,1] [,2] [,3] [,4] [,5] [1,] 11 13 15 17 19 [2,] 12 14 16 18 20 , , 3 [,1] [,2] [,3] [,4] [,5] [1,] 21 23 25 27 29 [2,] 22 24 26 28 30
List
List(リスト) は Vector, Matrix, Data Frame, Array, List 等の異なる型のデータをひとつのオブジェクトとして扱うことが可能なオブジェクトである。リストは関数 list を用いて作成する。
l <- list(c(1:8), c("A","B"), matrix(1:12,2,6)) # c(1:8), c("A","B"), matrix(1:12,2,6) を要素に持つlistを作成する l # 出力
実行結果
l <- list(c(1:8), c("A","B"), matrix(1:12,2,6)) # c(1:8), c("A","B"), matrix(1:12,2,6) を要素に持つlistを作成する > l # 出力 [[1]] [1] 1 2 3 4 5 6 7 8 [[2]] [1] "A" "B" [[3]] [,1] [,2] [,3] [,4] [,5] [,6] [1,] 1 3 5 7 9 11 [2,] 2 4 6 8 10 12
データ型の確認
関数 class でデータ型をチェックすることができる。
v <- c(105,202,155,91) # vector class(v) # 型 出力 m <- matrix(1:8,2,4) # matrix class(m) # 型 出力 df <- data.frame(cbind(LETTERS[1:4], 3:0)) # data.frame class(df) # 型 出力 a <- array(1:30, c(2,5,3)) # array class(a) # 型 出力 l <- list(c(1:8), c("A","B"), matrix(1:12,2,6)) # list class(l) # 型 出力 is.vector(v) # v が vector か check is.vector(m) # m が vector か check is.list(v) # v が list か check is.list(l) # l が list か check
実行結果
> v <- c(105,202,155,91) # vector > class(v) # 型 出力 [1] "numeric" > > m <- matrix(1:8,2,4) # matrix > class(m) # 型 出力 [1] "matrix" > > df <- data.frame(cbind(LETTERS[1:4], 3:0)) # data.frame > class(df) # 型 出力 [1] "data.frame" > > a <- array(1:30, c(2,5,3)) # array > class(a) # 型 出力 [1] "array" > > l <- list(c(1:8), c("A","B"), matrix(1:12,2,6)) # list > class(l) # 型 出力 [1] "list" > > is.vector(v) # v が vector か check [1] TRUE > is.vector(m) # m が vector か check [1] FALSE > > is.list(v) # v が list か check [1] FALSE > is.list(l) # l が list か check [1] TRUE
Rの基本関数の一覧は次のサイトを参照:
http://www.math.montana.edu/Rweb/Rhelp/00Index.html
補足:代入表現
Rでは以下の代入が全て等価になっている。
x <- c(10,20,30,40)
x = c(10,20,30,40)
assign("x", c(10,20,30,40))
c(10,20,30,40) -> x
実際に次のソースコードを実行すると、以下の実行結果になる。
price1 <- c(10,20,30,40) price1 price2 = c(10,20,30,40) price2 assign("price3", c(10,20,30,40)) price3 c(10,20,30,40) -> price4 price4
実行結果
>price1 <- c(10,20,30,40) > price1 [1] 10 20 30 40 > > price2 = c(10,20,30,40) > price2 [1] 10 20 30 40 > > assign("price3", c(10,20,30,40)) > price3 [1] 10 20 30 40 > > c(10,20,30,40) -> price4 > price4 [1] 10 20 30 40
文献:
- 作者: 金明哲
- 出版社/メーカー: 森北出版
- 発売日: 2007/10/01
- メディア: 単行本(ソフトカバー)
- 購入: 36人 クリック: 694回
- この商品を含むブログ (64件) を見る
- 作者: 青木繁伸
- 出版社/メーカー: オーム社
- 発売日: 2009/04/01
- メディア: 単行本
- 購入: 10人 クリック: 123回
- この商品を含むブログ (34件) を見る
R: The R Project for Statistical Computing
Java R Interface (JRI) を用い 統計解析環境 R を Java から使用する
統計解析・データマイニング環境の R を Java から使用する方法を以下に紹介する。
現在、RをJavaで使用する方法に関する文献は非常に少ないが参考サイトをまとめたものも下部に記述する。
rJava というPackageに含まれている Java R Interface (JRI) を用い R をJavaから呼び出すことができる。
※rJava:
Download: http://www.rforge.net/rJava/files/
SVN: svn://svn.rforge.net/rJava/
※以下、Eclipse 3.4.2の環境を例に説明する。
※また、Eclipseで R言語環境自体を使う方法はR を Eclipse で使うを参照。
統計解析環境 R のインストール・環境設定:
統計解析環境 R 自体のインストール・環境設定はR のインストール・環境設定を参照。
rJavaのインストール
※以下、Rをインストールしたフォルダ R_HOME = C:\R\R-2.10.1\ として説明する。
1. Rを起動し、rJava」パッケージをインストールする。
install.packages('rJava')
2. C:\R\R-2.10.1\library下に rJava フォルダが作成される。
その下の C:\R\R-2.10.1\library\rJava\jri 下にjri.dll, JRI.jar が配置されている。
Java Project の設定
1. ProjectのProperty->Java Build Path-> Librariesタブで、"External JARs"を選択。
2. C:\R\R-2.10.1\library\rJava\jri 下の JRI.jar を追加。
3. Run -> Run Configuration
以下の変数を設定する。
Path: C:\R\R-2.10.1\bin
R_DOC_DIR: C:\R\R-2.10.1\doc
R_INCLUDE_DIR: C:\R\R-2.10.1\include
R_SHARE_DIR: C:\R\R-2.10.1\share
Java Class Sample
Rとの接続は「Rengine」というClassが担い、assign()メソッドで値の受け渡しを行う。Rのコマンド実行はeval()メソッドで行う。動作確認のため以下にシンプルなサンプルを記述する。36の平方根を求めるプログラムで、結果は 6.0 となる。
import org.rosuda.JRI.REXP; import org.rosuda.JRI.Rengine; public class JriTest { public static void main(String[] args) { Rengine engine = new Rengine(new String[]{"--no-save"}, false, null); engine.assign("a", new int[]{36}); REXP result = engine.eval("sqrt(a)"); System.out.println(result.asDouble()); engine.end(); } }
実行結果
6.0
org.rosuda.JRI: http://www.rforge.net/org/docs/org/rosuda/JRI/package-summary.html
今後、JRI使用法や Google App Engine for Java (GAE/J)とのからみも今後紹介していきたいと思います。
補足:SVN設定
Rの SVNの設定手順も以下に紹介します。
Subversive Eclipse Plug-in インストール
Eclipseになじみのない人のために、SVNのSubversive プラグインのインストール設定も記述します。
1. Help -> Software Updates... を選択。Add Site押下。次のLocationをそれぞれ入力しOKを押下。
2. [Available Software]タブを選択
Location:
http://download.eclipse.org/technology/subversive/0.7/update-site/
http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/
3.svnと入力し「Subversive Site」と「SVN Connecters Site」の関連プラグインのみが表示させる。下記の5つのプラグインにチェックをして、[インストール]をクリックします。
・Subversive SVN Integration for Mylyn Project
・Subversive SVN Term Provider
・Subversive SVN Term Provider Localization
・Subversive SVN Connecters
・SVNKit 1.2.2 Inplementation
参考:
Eclipse 3.4でのバーション管理方法(Subversion編) ~Eclipse 3.4入門~ (3/4):CodeZine(コードジン)
Eclipse/プラグイン開発のTIPS集/GanymedeにSubversiveをインストールする - きのさいと
eclipsewiki.net - このウェブサイトは販売用です! - eclipsewiki リソースおよび情報
Subversion リポジトリロケーションの追加
1. Window -> Open Perspective -> Others を選択。
2. "SVNリポジトリー・エクスプローラー"を選択しOK。
3. "New Repository Location"ボタンをクリック、または、SVN Repository View を右クリックしてNew->Repository Locationを実行。
4. URL に以下のrJava SVN RepositoryのURLを入力し"Finish"押下。
rJava SVN Repository:
svn://svn.rforge.net/rJava/trunk
5. SVNリポジトリーにrJavaのRepository Locationが表示され、利用できるようになります。
参考:
rJava - Low-level R to Java interface - RForge.net
JRI - Java/R Interface - RForge.net
http://www.gisos.de/blog/articles/5/jri-and-eclipse-first-steps
http://mithil-tech.blogspot.com/2009/11/r-and-java-jri-via-eclipse.html
Package rJava (PDF)
いー ドット ぷりんとすたっくとれーす: math/R をJava(Eclipse)から使う
http://blog.livedoor.jp/mcmaster/archives/51264133.html
rJava - Low-level R to Java interface - RForge.net
文献:
- 作者: 金明哲
- 出版社/メーカー: 森北出版
- 発売日: 2007/10/01
- メディア: 単行本(ソフトカバー)
- 購入: 36人 クリック: 694回
- この商品を含むブログ (64件) を見る
- 作者: 青木繁伸
- 出版社/メーカー: オーム社
- 発売日: 2009/04/01
- メディア: 単行本
- 購入: 10人 クリック: 123回
- この商品を含むブログ (34件) を見る
Rグラフィックス ―Rで思いどおりのグラフを作図するために―
- 作者: Paul Murrell,久保拓弥
- 出版社/メーカー: 共立出版
- 発売日: 2009/10/22
- メディア: 単行本
- 購入: 3人 クリック: 100回
- この商品を含むブログ (20件) を見る
R: The R Project for Statistical Computing
http://www.okada.jp.org/RWiki/
R言語 - Wikipedia
R を Eclipse で使う
Open Source の統計解析・データマイニング環境である R。
R を Eclipse で使用するための環境構築法、使用方法を以下に紹介する。
参考:A guide to Eclipse and the R plug-in StatET (Longhow Lam, PDF)
※ここでは、R 2.10.1, Eclipse 3.4.2 を例に挙げる。
R, Eclipse のインストール
1.R のインストール・環境設定:
R のインストール・環境設定
2.Eclipseのインストール:
Eclipse.org: http://www.eclipse.org/
Pleiades (All in One Eclipse) :http://mergedoc.sourceforge.jp/
Eclipse にR plug-inのインストール
1. Eclipseを起動。
2. Help -> Software Updates.. -> Available Software -> Add Site
3. Location でEclipseのVersionに合った以下のURLを入力。
URL
−3.3: http://download.walware.de/eclipse-3.3/
−3.4: http://download.walware.de/eclipse-3.4/
−3.4: http://download.walware.de/eclipse-3.5/
4. 必要なプラグインを選択し、install押下。Pluginを選択。
5. Eclipseを再起動する。
Eclipse の R環境設定
Eclipseで使用する R 環境設定。
1. Window -> Preference を選択。
2. StatET -> R Interaction -> R Environments を選択し Add を押下。
3. Rのインストール場所(R_HOME) を設定 (ここでは"C:\R\R-2.10.1")し、OK を押下。R_HOMEが設定される。
R Console設定
Eclipse内部でのR Console実行の設定。
1. Run -> Run Configurations を選択
2. R Console をダブルクリック。New_configuration が生成される。
Configuration Nameを入力 (ここでは "Console Configuration"を入力)、Launch typeで「Rterm」を選択。
そして Apply を押下。
3.R Consoleの実行設定 ("Console Configuration")が作成される。
※注:次回以降のEclipse起動時には、最初にこの"Console Configuration"をダブルクリックし実行する。
R-scriptファイルを作成する
1. Project上で右クリック -> New -> Others
2. StatET の R-Script File を選択
3. R-Script Fileに名前をつける(ここでは rtest)。
4. 作成された Skeletonに、R の Code を記述していく。
参考
A guide to Eclipse and the R plug-in StatET (PDF)
http://kaiseki.ori.u-tokyo.ac.jp/~katukawa/R/eclipse.html
http://k-gsm.com/alias/?p=23
文献:
- 作者: 金明哲
- 出版社/メーカー: 森北出版
- 発売日: 2007/10/01
- メディア: 単行本(ソフトカバー)
- 購入: 36人 クリック: 694回
- この商品を含むブログ (64件) を見る
- 作者: 青木繁伸
- 出版社/メーカー: オーム社
- 発売日: 2009/04/01
- メディア: 単行本
- 購入: 10人 クリック: 123回
- この商品を含むブログ (34件) を見る
R: The R Project for Statistical Computing
http://www.okada.jp.org/RWiki/
R のインストール・環境設定
R のインストール
The Comprehensive R Archive Network からインストーラを取得できる。
The Comprehensive R Archive Network
以下、Windows版のRのインストール手順:
1.「Windows」をクリック
2.「base」をクリック
3.「Download R X.XX.X for Windows」をクリック →インストーラのダウンロードが開始される。
4. インストーラ R-X.XX.X-win32.exe をダブルクリックするとインストールが開始する。
[設定]
・"セットアップに使用する言語":「Japanese」
・"インストール先の指定":任意。例えば 「C:\R\R-2.10.1」
・"コンポーネント選択":「全てインストール」
・"起動時オプション":「いいえ(デフォルトのまま)」
・"追加タスクの選択":デフォルトのまま。
R User Configurationの設定(初期簡易設定)
R User Configuration は、Windows NT系のOS (2000/XP/Vista) にインストールした R のユーザ個別設定を簡易に行うためのです。
解説ページ:
http://androids.happy.nu/doc/r-tips?lang=ja#user-config内の「R User Configurationについて」。
ダウンロード: http://androids.happy.nu/dist/r_user_config011.zip
使用方法
1. ダウンロードした zip ファイルを解凍。
2. 解凍された「R user config.hta」 をダブルクリック。
3. 画面の右側にある「オート」欄のボタン「Rを初めて使うのでとりあえずつかいやすいように設定しておくれ」ボタンをクリックする。
R_HOME\bin\Rblas.dll の入れ替え
※R_HOME...Rのインストールフォルダ
以下、上記例に従い、R_HOME=C:\R\R-2.10.1 で記述する。
The Comprehensive R Archive Networkページ
The Comprehensive R Archive Network
1.「Windows」をクリック
2.「contrib」をクリック
3.「ATLAS」をクリック
4. CPU の種類をクリック(例えば Core2Duo の場合は「C2D」)
5.「Rblas.dll」をクリック
6.ダウンロードしたファイルを C:\R\R-2.10.1\bin\Rblass.dllと置き換える。
文献:
- 作者: 金明哲
- 出版社/メーカー: 森北出版
- 発売日: 2007/10/01
- メディア: 単行本(ソフトカバー)
- 購入: 36人 クリック: 694回
- この商品を含むブログ (64件) を見る
- 作者: 青木繁伸
- 出版社/メーカー: オーム社
- 発売日: 2009/04/01
- メディア: 単行本
- 購入: 10人 クリック: 123回
- この商品を含むブログ (34件) を見る
R: The R Project for Statistical Computing
http://www.okada.jp.org/RWiki/
R による統計解析・データマイニング
Ross IhakaとRobert Gentlemanにより開発が始められ、1997年より多くの賛同者が加わり開発が続けられている。市販のデータ解析ソフト SAS、SPSS、S-PLUSや、各種RDBMSとのインターフェースも実装されている。
各種解析手法とともに、Rの活用方法を紹介していきます。
参考:
R: The R Project for Statistical Computing
R言語 - Wikipedia