R;太慢,无法覆盖百万个向量的循环

时间:2019-08-17 07:47:27

标签: r

我正在管理数据表。我有13 * 2598893数据表,并且我正在尝试使新列填充有根据另一列计算的字符。  因此,我制作了一个函数,并将其应用于具有数百万行的“ for in”循环中。它需要永远!我等了几分钟,无法将其与系统崩溃区分开来。

我只尝试了10行,并且循环和函数运行良好。但是,当我将其扩展到其他行时,它又需要永远的时间。

str(eco)
'data.frame':   2598893 obs. of  13 variables:

具有这样的功能

check<-function(x){
  if(x<=15){
    return(1)
  }
  else{
    return(0)
  }
}

并应用了这样的循环。

for(x in c(1:nrow(eco))){eco[x,13]<-check(eco[x,4])}

它继续并且继续起作用。

如何缩短这项工作?还是这仅仅是我应该忍受的R的极限?

1 个答案:

答案 0 :(得分:3)

您可能应该尝试向量化您的操作(NB:public function birthday() { $date = Carbon::now(); $member = Member::whereMonth('dob', '=', $date->month)->whereDay('dob', '=', $date->day)->get(); return $member; } 循环通常可以在R中避免)。另外,您可以签出for软件包以进一步提高效率:

data.table