R的循环中的小数增量

时间:2018-02-27 14:51:17

标签: r loops decimal

我想找到" p"的价值。在下面(介于0和1之间),知道以下等式:

  • RI_26 = min(IR,na.rm=FALSE)
  • RI_min = 100-(sse*SUM/((1+p)*Dotation2017*100))^(1/p)

其中 RI_26 是我26区域的资源索引的最小值。在我的情况下这是一个常数。在RI_min中, sse和Dotations2017 是2个常数, p 是未知的。我知道 RI_26应该等于RI_min

解决它很容易,但是 SUM (存在于RI_min中)也是未知的,因为它是的函数p 如下:

`sum.function = function(p){
  SUM <- c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
  for(i in 1:length(Canton))
    if(IR[i] < 100) {
      SUM[i] <- (100-IR[i])^(1+p)*Pop[i]
      SUM[27] <- SUM[27]+SUM[i]
    }
  SUM <- round(SUM,0)
  return(SUM[27])
}

SUM = sum.function(p)

SUM返回一个数字(或向量1X1)。为了解决这个问题,我想找到满意的p值:

  • RI_26 / RI_min = 1

为此,我想做一个循环,从p = 0开始,然后将p的值增加0.01,直到达到1.当约束为True时,循环应该返回p_star的值(RI_26 / RI_min = 1.00)。

我不知道如何做到这一点,但它看起来像下面的代码:

p.function = function(){

  for(...)
    if(RI_26/RI_min = 1.000000) {
      p_star <- p

    }

  return(p_star)
}

因此当RI_26 / RI_min = 1.000000时,函数将返回p_star的值。我想在我的函数中写一下:p。函数递增&#34; p&#34;并得到我想要的结果?有什么想法吗?

1 个答案:

答案 0 :(得分:1)

for (i in seq(0, 1, by = 0.1)) {
    "Your code here"
}