我有R初學者,我寫了這個簡單的循環:爲什麼R中這個簡單的循環很慢?
for(i in 1:12000){
if(v$piano.tariff[i] == 2) {v$piano.tariff[i] = 0}
else {v$piano.tariff[i] = 1}
}
其中V是一個數據幀和piano.tariff其列之一。循環所做的只是將piano.tariff列的每個值更改爲1或0,從它們的初始值2和5開始。
現在,代碼可以工作,但問題在於它的速度很慢。最多需要4-5分鐘才能完成!在C++中,C#這樣的循環幾乎不需要幾秒鐘。
爲什麼這麼慢?有沒有更快的方法來實現這一點?還是僅僅是R慢了,就是這樣?
如果您是R的新手,很多關於循環和矢量化的問題都可以在http://www.burns-stat.com/pages/Tutor/R_inferno.pdf – 2013-04-08 16:59:32