[程式] R的迴圈

看板Statistics作者 (統計的巴比倫塔)時間16年前 (2010/02/10 01:01), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串1/2 (看更多)
[軟體程式類別]: R [程式問題]: 計算速度 [軟體熟悉度]: 中(3個月到1年) [問題敘述]: 請問一下 R的迴圈很慢這個缺點 有沒有什麼好方法可以克服? 我知道用 x[ 1:54575 , ] 再配上矩陣專用的 row or col function 可以算很快 但是每次都要避免使用迴圈實在是很痛苦也很不靈活 常常寫了迴圈 然後跑了老半天在等的時候 才想出比較快的寫法 請問有什麼幫迴圈加速的辦法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.177.165 ※ 編輯: gsuper 來自: 140.113.177.165 (02/10 01:01) ※ 編輯: gsuper 來自: 140.113.177.165 (02/10 01:03) ※ 編輯: gsuper 來自: 140.113.177.165 (02/10 01:04)

02/10 01:10, , 1F
似乎是天然缺陷,只能盡量避免用多層迴圈?
02/10 01:10, 1F

02/10 01:21, , 2F
有一些簡單的概念, 這記憶體的使用及 IO 有關
02/10 01:21, 2F

02/10 01:22, , 3F
不過直譯式語言本來就容易有這個問題, 多少都要避免.
02/10 01:22, 3F

02/10 01:27, , 4F
少寫幾層迴圈?
02/10 01:27, 4F

02/10 12:40, , 5F
迴圈交給 C 來做..
02/10 12:40, 5F

02/10 12:42, , 6F
R call C 在 linux 下很方便
02/10 12:42, 6F

02/10 12:45, , 7F
www.sfu.ca/~sblay/R-C-interface.ppt
02/10 12:45, 7F
不好意思 這投影片應該已經是很新手取向了 不過我還是沒辦法直覺的使用 可否舉個例子給我看? 比方說 手上有個 50000 * 10 的矩陣 目的是要算 rowmeans 迴圈寫法 (約10分鐘) meanVector <- as.vector(NULL) i=1 for(i in 1:50000) { meanVector <- c( meanVector , mean(x[i,]) ) } x <- cbind (x,meanVector) rm(i,meanVector) 這樣要怎麼用投影片的 function 去轉阿? ###### 我知道 rowMeans() 這個 function ###### ###### 這裡只是舉例 , 0rz ###### ※ 編輯: gsuper 來自: 140.113.239.247 (03/01 20:48) ※ 編輯: gsuper 來自: 140.113.239.247 (03/01 20:49)
文章代碼(AID): #1BSPJKDM (Statistics)
討論串 (同標題文章)
文章代碼(AID): #1BSPJKDM (Statistics)