作者wertymin24 (werty)
看板Statistics
標題[情報] R的運算速度問題
時間Thu Apr 7 18:23:55 2011
http://lookingatdata.blogspot.com/2011/04/speeding-up-r-computations.html
這是別人的網誌
主要是討論他在弄模擬時,發現一些可以改進速度的方法
e.g. () => {}
a^2 => a*a
mean(x) => sum(x)/length(x)
大家可以看看
因為小弟的實驗有一兩百筆資料就要偷笑了
所以沒有太深入的研究。
另外,我還是想問迴圈問題 (對不起...我比較笨)
http://0rz.tw/QD7KB
我在這裡看到的範例,迴圈後面有寫好i的位置
但是在正文裡面那個人去測速度時,用的迴圈
x<-rnorm(50)
system.time(for(i in 1:100000){mean(x)})
user system elapsed
1.522 0.000 1.523
我不懂為什麼R會知道寫程式的人要他重覆100000次?
麻煩知道的人可以開示一下~
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.82.37
1F:→ gsuper:後面那個問題我看不懂 , 你是不懂for的定義嗎? 04/07 19:40
2F:→ gsuper:不然看起來不就是測一下跑十萬次mean()要花多久時間嗎? 04/07 19:41
3F:→ gsuper:喔 我看懂了 ?system.time(expr) , 那個expr就是放一段程式 04/07 19:43
4F:→ obarisk:mean會排除NA,所以會比較慢吧 04/07 20:13
5F:→ wertymin24:回一樓,沒錯,我是不懂為什麼for可以這樣子寫 04/07 20:24
6F:→ wertymin24:因為{}並沒有i為什麼會知道要100000次? 04/07 20:24
7F:→ obarisk:只是做很多次,讓時間的距離出來 04/07 20:25
8F:→ obarisk:重點不在for裡面的內容 04/07 20:26
9F:→ obarisk:我發現下面的回文都說光了... 04/07 20:28
10F:→ obarisk:比較有趣的是我做a^6比a*a*a*a*a*a還快 04/07 20:29
11F:→ gsuper:{}裡面沒有i就是跑100000次阿 , {}裡面不一定要有i 04/07 21:20
12F:→ gsuper:因為R已經自動省略i++了,但若是寫i=i+1也沒差,R會自己判斷 04/07 21:24
13F:→ obarisk:R是用i++嗎? 不是從[]中的第一個開始到最後一個? 04/07 21:38
14F:→ obarisk:for(i in c(1,2,5,4,4,4)){cat(i,"\n")} 04/07 21:39
15F:推 gsuper:原來如此 , 那我誤解很久了 XD 04/07 21:53
16F:→ obarisk:不過如果用 04/07 23:55
17F:→ obarisk:for(i in 1:10){}cat(i,"\n")也很有趣 04/07 23:56