[問題] for loop 加速

看板R_Language作者 (吐吐林克)時間3年前 (2020/07/11 15:08), 3年前編輯推噓6(606)
留言12則, 8人參與, 3年前最新討論串1/1
大家好,目前正在進行某項統計實作。 簡單來說我已寫好一個函數,輸入一個數字會輸出一個向量(長度為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

07/11 15:23, 3年前 , 1F
lapply + do.call + rbind.data.frame?
07/11 15:23, 1F

07/11 19:02, 3年前 , 2F
試著做向量運算,或者平行化你的程式
07/11 19:02, 2F

07/11 20:21, 3年前 , 3F
input 存成list 用mapply 跑試試
07/11 20:21, 3F

07/11 21:33, 3年前 , 4F
若沒有保密問題,可把function貼出來,從function最佳
07/11 21:33, 4F

07/11 21:33, 3年前 , 5F
化開始,甚至再一併考慮向量運算。
07/11 21:33, 5F

07/11 21:34, 3年前 , 6F
否則,直接考慮平行運算也可以。
07/11 21:34, 6F

07/12 00:20, 3年前 , 7F
不能split→apply→combine??
07/12 00:20, 7F

07/12 20:54, 3年前 , 8F
dopar foreach?
07/12 20:54, 8F

07/13 00:23, 3年前 , 9F
貼程式出來看吧 這樣只能通靈啊
07/13 00:23, 9F

07/21 00:41, 3年前 , 10F
施主,你要問你的函數 是不是有相關沒相關可以直接用forea
07/21 00:41, 10F

07/21 00:41, 3年前 , 11F
ch 或者 parapply 這種平行速度比較快,如果有相關 那你就
07/21 00:41, 11F

07/21 00:41, 3年前 , 12F
沒辦法用平行了
07/21 00:41, 12F
文章代碼(AID): #1V2MLH9s (R_Language)
文章代碼(AID): #1V2MLH9s (R_Language)