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

文献:

Rによるデータサイエンス データ解析の基礎から最新手法まで

Rによるデータサイエンス データ解析の基礎から最新手法まで

Rによる統計解析

Rによる統計解析

http://www.math.montana.edu/Rweb/Rhelp/00Index.html
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の環境を例に説明する。

※また、EclipseR言語環境自体を使う方法は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

4. Project直下にjri.dll (C:\R\R-2.10.1\library\rJava\jri)をコピー。

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になじみのない人のために、SVNSubversive プラグインのインストール設定も記述します。

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 - このウェブサイトは販売用です! -&nbspeclipsewiki リソースおよび情報

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が表示され、利用できるようになります。

文献:

Rによるデータサイエンス データ解析の基礎から最新手法まで

Rによるデータサイエンス データ解析の基礎から最新手法まで

Rによる統計解析

Rによる統計解析

Rグラフィックス ―Rで思いどおりのグラフを作図するために―

Rグラフィックス ―Rで思いどおりのグラフを作図するために―

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-Project を作成する

1. File -> New -> Project を選択
2. StatET の R-Project を選択

3. Projecctに名前をつける(ここではRTest)。

R-scriptファイルを作成する

1. Project上で右クリック -> New -> Others

2. StatET の R-Script File を選択

3. R-Script Fileに名前をつける(ここでは rtest)。

4. 作成された Skeletonに、R の Code を記述していく。

R の実行・ショートカット

R codeを記述し、Eclipseに追加されたR実行ボタンを押し下げると Consoleに実行結果が表示される。

3つの実行ボタンがEclipse上に用意されている。

また、以下のショートカットが用意されている。

例えば「Ctrl+Rを押し、次にRを押す」と、ソースファイルの選択部分が実行され結果がコンソールに表示される。

文献:

Rによるデータサイエンス データ解析の基礎から最新手法まで

Rによるデータサイエンス データ解析の基礎から最新手法まで

Rによる統計解析

Rによる統計解析

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」
・"コンポーネント選択":「全てインストール」
・"起動時オプション":「いいえ(デフォルトのまま)」
・"追加タスクの選択":デフォルトのまま。

参考:
http://www.db.is.kyushu-u.ac.jp/rinkou/r/rinstall.html

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と置き換える。

Rの起動

Rのショートカットまたは、C:\R\R-2.10.1\bin\Rgui.exe を直接起動する。

R Consoleが立ち上がる。

文献:

Rによるデータサイエンス データ解析の基礎から最新手法まで

Rによるデータサイエンス データ解析の基礎から最新手法まで

Rによる統計解析

Rによる統計解析

R: The R Project for Statistical Computing
http://www.okada.jp.org/RWiki/

R による統計解析・データマイニング

R はオープンソースの統計解析、データマイニング環境。

Ross IhakaとRobert Gentlemanにより開発が始められ、1997年より多くの賛同者が加わり開発が続けられている。市販のデータ解析ソフト SASSPSS、S-PLUSや、各種RDBMSとのインターフェースも実装されている。

各種解析手法とともに、Rの活用方法を紹介していきます。


参考:
R: The R Project for Statistical Computing
R言語 - Wikipedia