05/10に開催されたgranpark.rbに参加して来ました。
浅井さんによるRのハンズオンでしたが、あの馴染めない構文に少し馴染むことができてよかったです。
参加した際のメモを書きました。
granpark.rbについて(miztiさん)
- 隔週で、各種技術のハンズオンとアルゴリズムのペアプロを交互にやっている。
- see also id:mizti
- 今後のテーマ
- CTF大会(セキュリティ)入門
- Rubyデバッガ詳解
- chef大会
R入門(浅井さん)
Rのメリット・デメリット
- メリット
- 処理速度もそこそこ速い
- タダ!
- 拡張はcranからとってこればいいじゃない
- デメリット
- メモリに乗らないとNG
- ベクトル、行列を意識したコードを書く必要がある
- Googleで検索しづらい
驚きの事実
- Rで
iris
と打つと、あやめのデータが出てくる - summary(iris)でmin,max,median,meanなどが出る
- 色付けてplotする
pairs(iris[1:4], pch = 21, bg = c("red","green3","blue")[unclass(iris$Species)])
ダメ、絶対
- Rでは添字操作をしてはいけない!
- 多重のforループは使わない
- if文はsumなどの関数の中でやる
for(j in 1:rep){
count=sum(iris[iris[,5]=="virginica",1])+count
}
理由
- R上で論理判断をするのではなく、Rが叩いているC++の最適化されたコードを使うほうが速いから
やってみよう
問題
これを高速化してみる
x <- runif(1000000)
test1 <- function(){
res <- numeric(1000000)
for(i in 1:1000000) res[i] <- exp(x[i])
return(res)
}
system.time(test1())
処理時間
ユーザ システム 経過
1.907 0.008 1.907
解答
x <- runif(1000000)
system.time(res <-exp(x))
処理時間
ユーザ システム 経過
0.012 0.002 0.013
別解
system.time(c(exp(x)))
感想
- Wekaの方が速いのかな?GUIもついていて楽?
- Pythonのpandasと比較するとどれくらい?