Re: [討論] for loop與*apply function請益

作者: celestialgod (天)   2015-05-22 12:52:45
我不知道你的sapply跟for為什麼會差那麼多
照理來說sapply跟for應該一樣快
我的模擬: (共有20萬列,elapsed是總時間)
group_f2, group_f3分別是for, sapply
group_f1用cut, cbind
group_f4用dplyr, plyr (用兩種不同的input, X_df: data.frame, X_dt: data.table)
# test replications elapsed relative user.self
# 1 group_f1(X_df) 20 0.96 1.000 0.95
# 4 group_f4(X_df) 20 0.98 1.021 0.97
# 5 group_f4(X_dt) 20 1.23 1.281 1.20
# 2 group_f2(X_df) 20 417.14 434.521 411.56
# 3 group_f3(X_df) 20 418.21 435.635 412.50
code link: http://pastebin.com/JArHScjb
凡事還是先考慮vecotrise為主,
處理資料還是推薦用plyr + dplyr來做處理,
依照需求再使用tidyr, reshape2
data.table則不一定,有key的時候會比較快,
其他則跟data.frame差不多
environment: windows 7 64bit, R-3.2.0
machine: i7-3770K@4.4GHz, DDR3-2400 16G ram
※ 引述《locka (locka)》之銘言:
: 各位大大晚安,
: 我有一份總共九個欄位約30萬筆的原始資料,
: 因為想要分成4組畫圖
: 所以第一個想到的事就是新增第十個欄位(稱作group),
: 然後根據某個欄位(假設為第八個欄位好了)的值分組,
: 並填入第十個欄位(group1~group4)
: 很笨的用for loop搭配if else寫,可是速度整個悲劇...
作者: ntme (one shot one kill)   2015-05-22 19:30:00
作者: obarisk (OSWALT)   2015-05-23 07:54:00
for沒寫好可以用cmpfun救一下

Links booklink

Contact Us: admin [ a t ] ucptt.com