R入門

Rにはずっと興味があった。
RjpWiki( http://www.okada.jp.org/RWiki/ )は盛況のようで、Scilabと比べて日本語の情報も豊富だ。
#前々から「The R BOOK」という本を買ってあったんだが、積読だった

Rは統計解析を専門としたソフトだ。Scilab(Matlab,Octave)は行列演算ソフトである事を考えると毛色がかなり違う。
Scilabでも統計処理はできるが、Rの方が扱いやすいだろう。

Rはデータマイニング用、Scilabアルゴリズム開発・制御設計と使い分けるのが良いと思う。

以下覚書

データ構造

vector
v <- c(1,2,3)
v1 <- seq(1,3)
v2 <- rep(1:3,3)

> v
[1] 1 2 3
> v1
[1] 1 2 3
> v2
[1] 1 2 3 1 2 3 1 2 3

factor

factorはvectorの特殊な場合である。
文字列とレベルを関連付けることができる。

v3 <- c("A","B","C","B","A","C","B")
v4 <- factor(v3,levels=c("A","B","C"))

> v3
[1] "A" "B" "C" "B" "A" "C" "B"
> v4
[1] A B C B A C B
Levels: A B C
matrix

matrixはvectorから生成する。

v5 <- seq(1,10)

m1 <- matrix(v5,ncol=2)
m1
     [,1] [,2]
[1,]    1    6
[2,]    2    7
[3,]    3    8
[4,]    4    9
[5,]    5   10
list

listは何でも入れられる。
ScilabだとCellにあたるようなものか?

v6 <- rnorm(10)
m2 <- matrix(seq(1:25),ncol=5)

l1 <- list(dataA=v6,dataB=m2)

l1

l1$dataA

l1$dataB

出力

$dataA
 [1] -0.60461509 -0.02167275  1.03395062  0.29808776 -0.05758621 -0.83023103
 [7]  0.54810233 -0.31637770 -1.44827432 -0.24362604

$dataB
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    6   11   16   21
[2,]    2    7   12   17   22
[3,]    3    8   13   18   23
[4,]    4    9   14   19   24
[5,]    5   10   15   20   25

> l1$dataA
 [1] -0.60461509 -0.02167275  1.03395062  0.29808776 -0.05758621 -0.83023103
 [7]  0.54810233 -0.31637770 -1.44827432 -0.24362604
>
> l1$dataB
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    6   11   16   21
[2,]    2    7   12   17   22
[3,]    3    8   13   18   23
[4,]    4    9   14   19   24
[5,]    5   10   15   20   25
Data Frame

データフレームはRで最も使用するデータ構造だ。
同じ長さのVectorで構成される。

v7 <- seq(1,20)
v8 <- rnorm(20)

l2 <- list(index=v7,data=v8)
d2 <- data.frame(l2)
d2

plot(d2)
lines(d2)

出力

   index        data
1      1 -1.31763178
2      2  0.09909031
3      3 -0.08975716
4      4  0.39467103
5      5 -1.87857595
6      6  0.52454249
7      7 -0.46894219
8      8  1.68234812
9      9  0.39807177
10    10  0.90979825
11    11  1.33533480
12    12  0.90547543
13    13  0.59395566
14    14  0.31066867
15    15 -0.93130899
16    16  1.57923091
17    17  0.09625874
18    18 -1.41671568
19    19 -2.78573772
20    20 -1.10497256