看板 R_Language 關於我們 聯絡資訊
大家好,目前正在進行某項統計實作。 簡單來說我已寫好一個函數,輸入一個數字會輸出一個向量(長度為6) 這個動作要操作1000次 將每次輸出的向量合併成資料集 (1000列*6行) 一般來說我習慣用for loop解決 先開好一個1000*6的矩陣 用for loop 把函數重複執行1000次 將第i次的結果塞入矩陣第i列 但因為函數的計算量龐大,用迴圈速度超級慢 上網查apply家族的用法感覺是針對一個資料集進行同步運算,不符合我想將每次計算結果存進矩陣的動作 請問是否有更快的方式能完成這種工作呢? 另外我有嘗試用 compiler::cmpfun將函數編譯 但速度比原函數更慢... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.161.252 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1594451281.A.276.html ※ 編輯: totolink (223.137.161.252 臺灣), 07/11/2020 15:09:35
hank830214: lapply + do.call + rbind.data.frame? 07/11 15:23
Gjerry: 試著做向量運算,或者平行化你的程式 07/11 19:02
hajebio: input 存成list 用mapply 跑試試 07/11 20:21
andrew43: 若沒有保密問題,可把function貼出來,從function最佳 07/11 21:33
andrew43: 化開始,甚至再一併考慮向量運算。 07/11 21:33
andrew43: 否則,直接考慮平行運算也可以。 07/11 21:34
khaos: 不能split→apply→combine?? 07/12 00:20
whs2009: dopar foreach? 07/12 20:54
celestialgod: 貼程式出來看吧 這樣只能通靈啊 07/13 00:23
asdiy: 施主,你要問你的函數 是不是有相關沒相關可以直接用forea 07/21 00:41
asdiy: ch 或者 parapply 這種平行速度比較快,如果有相關 那你就 07/21 00:41
asdiy: 沒辦法用平行了 07/21 00:41