R言語

概要

R言語は、統計解析向けのプログラミング言語及びその開発実行環境。

インストール

以下の URLからインストーラをダウンロードしてインストール

変数への代入

変数への代入は <- または -> で行う。
以下は、1〜5までの連続した値のベクトルを生成し、x という変数に代入している。

> x <- c(1:5)
> x
[1] 1 2 3 4 5

複数の変数に代入する事も可能

> 1:5 -> x -> y
> x
[1] 1 2 3 4 5
> y
[1] 1 2 3 4 5

左辺と右辺は入れ替える事も可能

> x <- y <- 1:5
> x
[1] 1 2 3 4 5
> y
[1] 1 2 3 4 5

連続した値の生成

n:m と記述する事で連続した値を生成する事ができる。

> 1:5
[1] 1 2 3 4 5

開始値, 終了値, 増分 を指定して値を生成する場合は seq を使用する。

> seq(1, 5, 2)
[1] 1 3 5

繰り返し値の生成

任意の値をN個分繰り返すには rep を使用する。

> rep(1, 5)
[1] 1 1 1 1 1

値には ベクトルを指定する事もできる。

> rep(1:3, 5)
 [1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3

ベクトルの生成

ベクトルの生成は c() で行う。

> x <- c(100,200,300)
> x
[1] 100 200 300

外部ファイルの読み込み

別ファイルに保存したスクリプトを読み込むには source を使用する。

test.R

x = c(1:5)

実行例

> source("test.R")
> x
[1] 1 2 3 4 5

オブジェクトの出力

print

> x <- 1:5
> print(x)
[1] 1 2 3 4 5

sprintf

書式付きでオブジェクトを表示する場合には sprint を使用する。

> sprintf("%3.2f", 123.456)
[1] "123.46"

cat

cat を使用すれば文字列をダブルクォーテーションなしで表示できる。

> str1 = "ABCDEFG"
> cat(str1)
ABCDEFG

str

str を使用すると、オブジェクトの内容をデータ型などの情報付きで表示できる。

> str1 = "123"
> str(str1)
 chr "123"

ファイル入出力

基本的なデータ入出力

file
write
writeLine

CSVファイルの入出力

TODO:

write.csv

データフレームの入出力

TODO:

read.table
write.table

Excelへのデータ出力

TODO:

write.xlsx()
write.xlsx2()

条件分岐

> x = 10
> if (x > 5) {
+   print("x > 5")
+   print(x)
+ } else {
+   print("x <= 5")
+   print(x)
+ }
[1] "x > 5"
[1] 10

繰り返し

繰り返し処理には for文が使用できる。
ただし R の for文は遅いので処理を関数化して apply系で記述する方が高速に動作する。

> for (i in 1:5) {
+   print(i)
+ }
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5

文字列の操作

文字列の結合

> paste("abc", "def", sep="")
[1] "abcdef"

ベクトルの操作

ベクトルの生成

c() でベクトルの生成を行う事ができる。

> x <- c(100,200,300)
> x
[1] 100 200 300

連続した値のベクトルであれば n:m でも生成可能。

> x <- 1:5
> x
[1] 1 2 3 4 5

ベクトルの要素へのアクセス

要素番号を指定して特定の要素にアクセスする事ができる。

> x <- 10:20
> x
 [1] 10 11 12 13 14 15 16 17 18 19 20
> x[2] <- 99
> x
 [1] 10 99 12 13 14 15 16 17 18 19 20

ベクトルの特定の値を書き換える

要素番号を指定して特定の要素にアクセスする事ができる。

> x <- 10:20
> x
 [1] 10 11 12 13 14 15 16 17 18 19 20
> x[x == 15] <- 999
> x
 [1]  10  11  12  13  14 999  16  17  18  19  20

上記を分けて書くと以下のようになる。
※真偽値リストを条件に指定して真である要素を書き換えている。(pandasのデータフレーム等と同じやり方)

> x <- 10:20
> x
 [1] 10 11 12 13 14 15 16 17 18 19 20
> condition <- x == 15
> condition
 [1] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
> x[condition] <- 999
> x
 [1]  10  11  12  13  14 999  16  17  18  19  20

ベクトルの結合

c() でベクトルを結合する事ができる。

> x <- 1:10
> y <- 11:20
> x
 [1]  1  2  3  4  5  6  7  8  9 10
> y
 [1] 11 12 13 14 15 16 17 18 19 20
> c(x, y)
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

ベクトルの要素の追加

append でベクトルに要素を追加する事ができる。

> x <- 1:10
> append(x, 101:105)
 [1]   1   2   3   4   5   6   7   8   9  10 101 102 103 104 105

行列の操作

行列の生成

matrix で行列を生成する事ができる。

> matrix(1:9, nrow=3, ncol=3)
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> matrix(1:9, nrow=3, ncol=3, byrow=T)
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9

行列の要素へのアクセス

行列の各要素へは [行No, 列No] でアクセス可能。

> x <- matrix(1:9, nrow=3, ncol=3, byrow=T)
> x
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
> x[2,2]
[1] 5
> x[2,2] <- 10
> x
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4   10    6
[3,]    7    8    9

以下のように、特定の値を変更する事も可能。

> x <- matrix(1:9, nrow=3, ncol=3, byrow=T)
> x
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
> x[x == 1 | x == 8] <- 999
> x
     [,1] [,2] [,3]
[1,]  999    2    3
[2,]    4    5    6
[3,]    7  999    9

以下の例では偶数値を "even!" に書き換えている。

> x <- matrix(1:9, nrow=3, ncol=3, byrow=T)
> x
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
> x[x %% 2 == 0] <- "even!"
> x
     [,1]    [,2]    [,3]   
[1,] "1"     "even!" "3"    
[2,] "even!" "5"     "even!"
[3,] "7"     "even!" "9"   

pandasのデータフレームと同じ様に Bool値のリストを作って真となるの要素を書き換える事も可能。

> x <- matrix(1:9, nrow=3, ncol=3, byrow=T)
> x
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
> x[x %% 2 == 0 -> even]
[1] 4 2 8 6
> even
      [,1]  [,2]  [,3]
[1,] FALSE  TRUE FALSE
[2,]  TRUE FALSE  TRUE
[3,] FALSE  TRUE FALSE
> x[even] <- "even!"
> x
     [,1]    [,2]    [,3]   
[1,] "1"     "even!" "3"    
[2,] "even!" "5"     "even!"
[3,] "7"     "even!" "9"

行列の結合

rbind または cbind で行列を結合する事ができる。
※rbindは縦に行を結合、cbind は横に列を結合。

> x = matrix(1:9,ncol = 3, nrow =3)
> y = matrix(11:13, ncol = 3, nrow =1)
> z = matrix(21:23, ncol = 1, nrow =3)
> x
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> y
     [,1] [,2] [,3]
[1,]   11   12   13
> z
     [,1]
[1,]   21
[2,]   22
[3,]   23
> rbind(x, y)
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
[4,]   11   12   13
> cbind(x, z)
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   21
[2,]    2    5    8   22
[3,]    3    6    9   23

リストの操作

ベクトルや行列などの異なる構造のデータを集めて 1 個のオブジェクトに纏める場合にはリストを使用する。

リストの生成

> x <- 1:10
> y <- 101:110
> list(x, y)
[[1]]
 [1]  1  2  3  4  5  6  7  8  9 10

[[2]]
 [1] 101 102 103 104 105 106 107 108 109 110

リストの要素へのアクセス

リストの要素には [要素番号] または 要素番号 でアクセスする事ができる。
[要素番号] でアクセスした場合の戻り値はリスト、要素番号でアクセスした場合の戻り値は要素の内容そのものとなる。

> l = list(1,2,3)
> l[1]
[[1]]
[1] 1

> l[[1]]
[1] 1

データフレームの操作

データフレームを使用すると異なる型のデータをまとめて1 つの変数として持つ事ができる。
単純な行列と違い、各行/列はラベルを持ち、ラベル指定による操作が可能。
列のデータ型が異なっていても扱える為、ベクトルやリストをデータフレームに変換することで統計解析がやりやすくなる。

データフレームの生成

TODO:

データフレームの生成

TODO:

その他の関数

関数名説明
scan
save
load
rm
as.character
as.integer

トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS