【发布时间】:2021-01-25 15:42:39
【问题描述】:
我试图在 R 中重复一个 for 循环固定次数。这是我要重复的代码示例
for (i in 1:nrow(data)) {
if (i>130){
data$deltas[i]=-((-data$p[i]))*data$alphas[i]
}
else {
data$deltas[i]=
((-(((data$p[i+1])-(data$p[i])))*data$alphas[i]) + data$deltas[i+1])
}
}
我没有任何需要满足的条件,只需要在同一个数据集上运行相同的代码n次即可。
【问题讨论】:
-
@akrun 使用复制不能完成这项工作。问题是我试图在数据集中填充一个变量,以便最终结果是具有新值的数据集。复制命令不这样做。
-
@akrun 我无法生成提供相同输出的可重现示例。在我的数据集中,每次运行时输出都会不断变化,这就是我想运行几次的原因。
-
在您的代码中,
data$deltas[i]的值取决于data$deltas[i+1],这是不可能的。 (除非deltas已经存在...).. 但这可能是每次运行时值都会发生变化的原因。 -
只是在这里猜测...您的数据是 130 行吗?这就是为什么里面有 if 条件吗?
-
如果是这样,您的循环可以简化为:
library(dplyr);mutate(data, deltas = (p - lead(p, default=0)) * alphas + lead(deltas, default=0))