【问题标题】:Iteration in R, weird result with for-loopR中的迭代,for循环的奇怪结果
【发布时间】:2016-02-16 01:57:56
【问题描述】:

我正在用 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一个值。这对我来说没有多大意义,因为我试图为每个可能的k 分配一个值给x。我在这里想念什么?

一如既往,我们将不胜感激。

【问题讨论】:

  • x 每次迭代都会被覆盖。你看到了吗?正确分配它并将结果分配给x的单个元素。
  • 亲爱的反对者,您反对的原因是什么?请告诉我,以便我将来调整我的问题?

标签: r algorithm for-loop iteration


【解决方案1】:

既然你想要一个向量,x 应该是一个向量。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 2021-12-20
    • 1970-01-01
    • 2013-10-04
    相关资源
    最近更新 更多