いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【R】処理を速くしてみたい

・お題:Rでfor文を使うと処理が遅いので、for文を使わずに処理を速くしてみたい。

 

・以下のサイトを参考にさせて頂いた。

book.mynavi.jp

 

・とりあえず、以前のようにfor文で処理を記載してみる。1から1億まで整数を二乗して足してもらった。

> m=0
> tic()
> for (n in 1:1000000000) {
+     m<-m+n**2
+ }
> toc()
26.75 sec elapsed

 

・forを使わずに、何とかしてみる。今回は問題が単純なので、二乗して足す操作に1:100000000をそのまま突っ込む。いわゆるベクトル化?というやつらしい。確かに所要時間が短くなった。

> m<-0
> tic()
> m<-sum((1:1000000000)**2)
> toc()
4.96 sec elapsed

 

・処理内容によっては、function関数やapply系関数を使うと良いみたい。

 

おわり。