第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

加速R中的循環(huán)運算

加速R中的循環(huán)運算

瀟湘沐 2019-06-14 17:11:15
加速R中的循環(huán)運算我在R中有一個很大的性能問題,我編寫了一個函數(shù),在data.frame對象。它只是將一個新列添加到data.frame積累一些東西。(簡單操作)。這個data.frame大約有850 K行。我的電腦還在工作(現(xiàn)在大約10小時),我對運行時一無所知。dayloop2 <- function(temp){     for (i in 1:nrow(temp)){             temp[i,10] <- i        if (i > 1) {                          if ((temp[i,6] == temp[i-1,6]) & (temp[i,3] == temp[i-1,3])) {                  temp[i,10] <- temp[i,9] + temp[i-1,10]                                 } else {                 temp[i,10] <- temp[i,9]                                                 }         } else {             temp[i,10] <- temp[i,9]         }     }     names(temp)[names(temp) == "V10"] <- "Kumm."     return(temp)}有什么辦法加快這個行動嗎?
查看完整描述

3 回答

?
哈士奇WWW

TA貢獻1799條經(jīng)驗 獲得超6個贊

如果你用for循環(huán),您很可能是在編碼R,就好像它是C、Java或其他什么東西一樣。正確矢量化的r代碼非??臁?/trans>

例如,以這兩段簡單的代碼為例,按順序生成一個包含10,000個整數(shù)的列表:

第一個代碼示例是如何使用傳統(tǒng)的編碼范式編寫循環(huán)代碼。它需要28秒才能完成

system.time({
    a <- NULL
    for(i in 1:1e5)a[i] <- i})
   user  system elapsed 
  28.36    0.07   28.61

通過簡單的預分配內(nèi)存操作,您可以得到幾乎100倍的改進:

system.time({
    a <- rep(1, 1e5)
    for(i in 1:1e5)a[i] <- i})

   user  system elapsed 
   0.30    0.00    0.29

但是使用基R向量操作使用冒號運算符:這一操作幾乎是即時的:

system.time(a <- 1:1e5)

   user  system elapsed 
      0       0       0


查看完整回答
反對 回復 2019-06-14
  • 3 回答
  • 0 關注
  • 1070 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號