R中的迭代,for循环的奇怪结果

时间:2015-11-14 16:16:51

标签: r algorithm for-loop iteration

我在R中编写了一些代码,以便在给定任何容差的情况下确定ai的最佳估算值。到目前为止,我已经提出了这个问题:

iter<- function (ai, k, tolerance){
  at = ai*(1-ai^2*R[k]^ai*(log(R[k]))^2/(1-R[k]^ai)^2)/
(1 - (ai^2*R[k]^ai*(log(R[k]))^2)/(1-R[k]^ai)^2 + ai*(H(k) 
- 1/ai - R[k]^ai*log(R[k])/(1-R[k]^ai)))
  while((at-ai) > tolerance) {
    ai = at
    at = ai*(1-ai^2*R[k]^ai*(log(R[k]))^2/(1-R[k]^ai)^2)/
(1 - (ai^2*R[k]^ai*(log(R[k]))^2)/(1-R[k]^ai)^2 + ai*(H(k) 
- 1/ai - R[k]^ai*log(R[k])/(1-R[k]^ai)))
    a0 = at
  }
  return(at)
}

x<- iter(ai = H(k), k, tolerance = 0.000001)

其中RH是每个k的已知变量,并且ai的初始估算值已知,即H(k)。此代码适用于k的任何值,例如

x<- iter(ai = H(k), 21, tolerance = 0.000001)

给出了一个好结果。但是,我的问题是,当我尝试将其嵌入到for循环中时(我实际上想要一个向量x[k],其中计算k的每次迭代),即:

for (k in seq (along = 1: (n-1)){
x<- iter(ai = H(k), 21, tolerance = 0.000001)
}

这段代码并没有给我一个向量,而是为x提供了一个值。这对我来说没有多大意义,因为我试图为每个可能的x分配一个值k。我在这里错过了什么?

与往常一样,任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:2)

由于你想要一个向量,x应该是一个向量。

x<-numeric(n-1)
for (k in seq (along = 1: (n-1)){
    x[k]<- iter(ai = H(k), 21, tolerance = 0.000001)
}