R 中的迭代,for 循环的奇怪结果
Iteration in R, weird result with for-loop
我正在用 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)
其中 R
和 H
是每个 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
的一个值。这对我来说没有多大意义,因为我正在尝试为每个可能的 k
分配一个值给 x
。我在这里错过了什么?
一如既往,我们将不胜感激任何帮助。
既然你想要一个向量,那么x
应该是一个向量。
x<-numeric(n-1)
for (k in seq (along = 1: (n-1)){
x[k]<- iter(ai = H(k), 21, tolerance = 0.000001)
}
我正在用 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)
其中 R
和 H
是每个 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
的一个值。这对我来说没有多大意义,因为我正在尝试为每个可能的 k
分配一个值给 x
。我在这里错过了什么?
一如既往,我们将不胜感激任何帮助。
既然你想要一个向量,那么x
应该是一个向量。
x<-numeric(n-1)
for (k in seq (along = 1: (n-1)){
x[k]<- iter(ai = H(k), 21, tolerance = 0.000001)
}