[情報] R的運算速度問題

看板Statistics作者 (werty)時間15年前 (2011/04/07 18:23), 編輯推噓1(1016)
留言17則, 3人參與, 最新討論串1/1
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

04/07 19:40, , 1F
後面那個問題我看不懂 , 你是不懂for的定義嗎?
04/07 19:40, 1F

04/07 19:41, , 2F
不然看起來不就是測一下跑十萬次mean()要花多久時間嗎?
04/07 19:41, 2F

04/07 19:43, , 3F
喔 我看懂了 ?system.time(expr) , 那個expr就是放一段程式
04/07 19:43, 3F

04/07 20:13, , 4F
mean會排除NA,所以會比較慢吧
04/07 20:13, 4F

04/07 20:24, , 5F
回一樓,沒錯,我是不懂為什麼for可以這樣子寫
04/07 20:24, 5F

04/07 20:24, , 6F
因為{}並沒有i為什麼會知道要100000次?
04/07 20:24, 6F

04/07 20:25, , 7F
只是做很多次,讓時間的距離出來
04/07 20:25, 7F

04/07 20:26, , 8F
重點不在for裡面的內容
04/07 20:26, 8F

04/07 20:28, , 9F
我發現下面的回文都說光了...
04/07 20:28, 9F

04/07 20:29, , 10F
比較有趣的是我做a^6比a*a*a*a*a*a還快
04/07 20:29, 10F

04/07 21:20, , 11F
{}裡面沒有i就是跑100000次阿 , {}裡面不一定要有i
04/07 21:20, 11F

04/07 21:24, , 12F
因為R已經自動省略i++了,但若是寫i=i+1也沒差,R會自己判斷
04/07 21:24, 12F

04/07 21:38, , 13F
R是用i++嗎? 不是從[]中的第一個開始到最後一個?
04/07 21:38, 13F

04/07 21:39, , 14F
for(i in c(1,2,5,4,4,4)){cat(i,"\n")}
04/07 21:39, 14F

04/07 21:53, , 15F
原來如此 , 那我誤解很久了 XD
04/07 21:53, 15F

04/07 23:55, , 16F
不過如果用
04/07 23:55, 16F

04/07 23:56, , 17F
for(i in 1:10){}cat(i,"\n")也很有趣
04/07 23:56, 17F
文章代碼(AID): #1DdP2zRj (Statistics)