循环更快

coo*_*ter 7 for-loop r data.table

我有一个约2000万行文件,并且我试图在其上运行for循环。我等了整个周末,但还没有完成1%。

我正在尝试对每一行的一列进行计算。如果该值小于0.5,它将采用该值并将其添加到新列中;如果不小于0.5,它将采用该值并将其从1中减去,然后将该值添加到新列中。

for (i in 1: length(halflife$year)){
  if(halflife$year[i] < 0.5){
    halflife$month[i] = halflife$year[i]
  } else{
    halflife$month[i] = 1 - halflife$year[i]
  }
}
Run Code Online (Sandbox Code Playgroud)

它应添加一个名称month为的新列halflife,且所有值均小于0.5

Fin*_*ino 6

使用data.table包应该更快

library(data.table)

halflife = data.table(halflife)
halflife[year < 0.5, month := year]
halflife[year >= 0.5, month := 1 - year]
Run Code Online (Sandbox Code Playgroud)

此外,如果您要从csv文件中读取数据,请使用fread()from data.table代替read.csv()。快多了

  • setDT()比使用data.table()转换效率更高。 (6认同)