假设我有以下数据集dt
和一个常数constant
.
dt <- structure(list(var1 = c(-92186.7470607738, -19163.5035325072,
-18178.8396858014, -9844.67882723287, -16494.7802822178, -17088.0576319257
), var2 = c(-3.12, NA, NA, NA, NA, NA)), class = c("data.table",
"data.frame"), row.names = c(NA, -6L))
constant <- 608383
print(dt)
var1 var2
1: -92186.747 -3.12
2: -19163.504 NA
3: -18178.840 NA
4: -9844.679 NA
5: -16494.780 NA
6: -17088.058 NA
的价值var2
取决于前一行的值,就像这样
for(i in 2:nrow(dt)){
prev <- dt[(i-1),]
dt[i, var2 := prev$var2 - var1/constant]
}
print(dt)
var1 var2
1: -92186.747 -3.120000
2: -19163.504 -3.088501
3: -18178.840 -3.058620
4: -9844.679 -3.042439
5: -16494.780 -3.015326
6: -17088.058 -2.987238
尽管这个 for 循环提供了所需的输出,但在大数据集上速度非常慢。有没有更快的方法来实现这个输出?最好使用data.table
.