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

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

在這個(gè)簡單的例子中,analyze2
和的計(jì)算時(shí)間差別不大analyze3
。這是因?yàn)槲覀冎坏?2個(gè)文件,因此我們只進(jìn)行12次復(fù)制/增長操作。如果我們?cè)诟辔募蛭覀冋谠鲩L的數(shù)據(jù)對(duì)象上這樣做,那么復(fù)制/增長的代價(jià)將會(huì)大得多。
請(qǐng)注意,apply
為您處理這些內(nèi)存分配問題,但是您必須將循環(huán)部分寫為要傳遞的函數(shù)apply
。從本質(zhì)上講,apply
它只是一個(gè)for
帶有額外便利的循環(huán)。






評(píng)論(0)


暫無數(shù)據(jù)
CDA考試動(dòng)態(tài)
CDA報(bào)考指南
推薦帖子
0條評(píng)論
0條評(píng)論
0條評(píng)論