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