作者gsuper (統計的巴比倫塔)
看板Statistics
標題[程式] R的迴圈
時間Wed Feb 10 01:01:05 2010
[軟體程式類別]: 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)
1F:推 west1996:似乎是天然缺陷,只能盡量避免用多層迴圈? 02/10 01:10
2F:→ andrew43:有一些簡單的概念, 這記憶體的使用及 IO 有關 02/10 01:21
3F:→ andrew43:不過直譯式語言本來就容易有這個問題, 多少都要避免. 02/10 01:22
4F:推 wlsherica:少寫幾層迴圈? 02/10 01:27
5F:→ ADORIAN:迴圈交給 C 來做.. 02/10 12:40
6F:→ ADORIAN:R call C 在 linux 下很方便 02/10 12:42
7F:→ ADORIAN:www.sfu.ca/~sblay/R-C-interface.ppt 02/10 12:45
不好意思
這投影片應該已經是很新手取向了
不過我還是沒辦法直覺的使用
可否舉個例子給我看?
比方說
手上有個 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)