如何在R中长度大于1的向量上使用while循环?

时间:2019-05-31 17:13:04

标签: r vector while-loop

下面的while循环需要将每个人的值降低到 1.它所做的是将函数中的公式作为公式,从中减去1,然后将尝试满足循环中所述的条件。一旦x的值为每个人一个,它将停止运行。这需要与上面的功能同时完成。我希望将它们都存储为函数,并使用purrr的map函数来完成此操作,但是,这两种方法都不起作用。仅在下面提供的功能上。最终,我想将新值存储为矢量,但是,现在,我已经在上面设置了打印设置,以查看其作用

while(abs(X-1) >= 0.000001) {
r<-if_else (X-1>0,  
        pop_nest$data["approx.r"]+0.00000001,  
        pop_nest$data["approx.r"]-0.00000001)
    }
    print(r)

x<-function(pop_nest) { 
sum(exp(-pop_nest["approx.r"]*pop_nest["x"])*pop_nest["Ro"], na.rm = TRUE) 
} 

我也尝试过将while循环放入函数中,但是出现以下错误。

In addition: Warning messages:
1: In while (abs(X - 1) >= 1e-06) { :
the condition has length > 1 and only the first element will be used
Show Traceback

Rerun with Debug
Error: `true` must be length 400 (length of `condition`) or one, not 0

我正在寻找一些建议,以使此while循环在嵌套数据框中的每个个体上运行,以满足循环中所述的条件。除了使用while循环外,还有其他建议值得赞赏(即uniroot是否可以解决此问题)?
当我删除一个人并将其放入向量中时,可以获得我想要的结果(因此嵌套了数据框)。非常感谢您的投入!

0 个答案:

没有答案