2018-11-07
閱讀量:
1085
如何提高R的循環(huán)速度?
在R中使用循環(huán)時,遵循一些黃金規(guī)則可提高運行速度:
- 存在矢量化替代時,請勿使用循環(huán)
- 不長的物體(通過
c
,cbind
在循環(huán)過程等) - R有創(chuàng)建一個新的對象,并在整個信息復制只是為了添加新元素或行/列 - 分配一個對象來保存結(jié)果并在循環(huán)期間填充它
例如,我們將創(chuàng)建一個新版本analyze
,它將返回每個文件的每日平均炎癥(列)。

請注意我們?nèi)绾?code>out在每次迭代中添加新列?這是for
在R 中編寫循環(huán)的主要罪過。
相反,我們可以創(chuàng)建一個具有正確尺寸(行/列)的空矩陣來保存結(jié)果。然后我們遍歷文件,但這次我們填寫f
結(jié)果矩陣的第一列out
。這次R沒有復制/增長來處理。

在這個簡單的例子中,analyze2
和的計算時間差別不大analyze3
。這是因為我們只迭代12個文件,因此我們只進行12次復制/增長操作。如果我們在更多文件或我們正在增長的數(shù)據(jù)對象上這樣做,那么復制/增長的代價將會大得多。
請注意,apply
為您處理這些內(nèi)存分配問題,但是您必須將循環(huán)部分寫為要傳遞的函數(shù)apply
。從本質(zhì)上講,apply
它只是一個for
帶有額外便利的循環(huán)。






評論(0)


暫無數(shù)據(jù)
推薦帖子
0條評論
0條評論
0條評論