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

我正在尝试对每一行的一列进行计算。如果该值小于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]
  }
}


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

最佳答案

使用data.table包应该更快

library(data.table)

halflife = data.table(halflife)
halflife[year < 0.5, month := year]
halflife[year >= 0.5, month := 1 - year]


此外,如果要从csv文件读取数据,请使用fread()中的data.table而不是read.csv()。快多了

关于r - 循环更快,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57573191/

10-12 19:21