使用先前计算结果的迭代计算-R

使用先前计算结果的迭代计算-R,r,iteration,calculation,R,Iteration,Calculation,我不久前发布了这个问题,提出了很多很好的建议,但没有一个能达到我使用Excel所达到的效果 假设我们有以下参数: Pd.sil.initial = 0.011 Pd.sul.i = 30 Pd.sul.f = ? R.inc = 100 D.Pd = 536000 我需要使用以下等式计算Pd.sul.f: Pd.sul.f=(Pd.sul.i+(R.inc*Pd.sil.i))/(1+(R.inc/D.Pd)) 这需要使用上一次计算的Pd.sul.f结果作为下一次计算的Pd.sul.i进行迭代

我不久前发布了这个问题,提出了很多很好的建议,但没有一个能达到我使用Excel所达到的效果

假设我们有以下参数:

Pd.sil.initial = 0.011
Pd.sul.i = 30
Pd.sul.f = ?
R.inc = 100
D.Pd = 536000
我需要使用以下等式计算Pd.sul.f:

Pd.sul.f=(Pd.sul.i+(R.inc*Pd.sil.i))/(1+(R.inc/D.Pd))

这需要使用上一次计算的Pd.sul.f结果作为下一次计算的Pd.sul.i进行迭代。我提供了一张Excel工作表的屏幕截图,突出显示了这一点,以及前几次计算的答案

以前向我建议的R代码,但不幸的是,它没有提供与我的Excel工作表相同的结果:

Pd.sul.f <- function(n) {

 return(Pd.sul.i + n * (R.inc * Pd.sil.i) / (1 + R.inc/D.Pd))

}

sapply(1:100000, Pd.sul.f)
Pd.sul.f这应该可以:

Pd.sil.initial = 0.011
Pd.sul.i = 30
R.inc = 100
D.Pd = 536000

n=10

a <- data.frame(matrix(,nrow=n, ncol=1))

for (i in 1:n) {
   Pd.sul.f <- ((Pd.sul.i + (R.inc * Pd.sil.initial)) / (1 + R.inc / D.Pd))
   a[i,] <- Pd.sul.f
   Pd.sul.i <- Pd.sul.f
}

Pd.sil.initial=0.011
Pd.sul.i=30
R.inc=100
D.Pd=536000
n=10

a你能分享一些可复制的样本数据吗?如果我能再问一件事,我将如何创建一个数据库,对R.inc进行求和,以在每次迭代中生成累积R?这是上面发布的屏幕截图中的Rcum列?我试着按照你写的代码来做,但结果不是从100开始的。我编辑了我的帖子来回答你的问题:)。啊,这太棒了,再次感谢你的帮助。期待有一天我能解决这样的问题。干杯
Pd.sil.initial = 0.011
Pd.sul.i = 30
R.inc = 100
D.Pd = 536000

n=10

a <- data.frame(matrix(,nrow=n, ncol=2))
a[1,1] <- 30
a[1,2] <- 100

for (i in 2:n) {
   Pd.sul.f <- ((Pd.sul.i + (R.inc * Pd.sil.initial)) / (1 + R.inc / D.Pd))
   a[i,1] <- Pd.sul.f
   a[i,2] <- i * 100
   Pd.sul.i <- Pd.sul.f
}

for (i in 2:n) {
  a[i,1] <- ((a[[1]][[i-1]] + (R.inc * Pd.sil.initial)) / (1 + R.inc / D.Pd))
  a[i,2] <- a[[2]][[i-1]] + 100
}