首页 > 解决方案 > R:循环命令以求解在每次迭代中增加的数值变量,直到总和收敛到给定整数

问题描述

我从来没有使用 R 通过迭代来求解一个数字。我用“循环直到”语法搜索了一个解决方案,但没有成功。也许这可以用类似于 Matlab 中“fsolve”的东西来完成。

我有以下(简化)data.table

head(db)
    client_id Price Quantity Ai_SR
1: 0100003801 2.802      160 197.2983
2: 0100003802 2.802      142 178.1377
3: 0100003803 2.802      240 196.0487
4: 0100003804 2.802       75 175.2219
5: 0100003805 2.802      145 208.5448
6: 0100010401 2.802      159 362.6629

从 开始P_bar = 1,我想迭代以下命令:

sum(db[, (Ai_SR * P_bar^(-0.15)) * P_bar])

直到 sum(db[, (Ai_SR * P_bar^(-0.15)) * P_bar]) = 8493853224.

如何编写P_bar通过在每次迭代中增加 0.01 来执行此操作的命令?

此外,我确信总和永远不会完全收敛到8493853224. 因此,我认为我必须循环命令直到总和严格大于8493853224并简单地存储P_bar总和之前的最后一个8493853224

我想我可以复制并粘贴命令并替换P_bar为 1, 1.01, 1.02, ..., 直到总和接近8493853224。有没有更好的方法来做到这一点?

如果之前有人问过这个问题,我深表歉意。在我的辩护中,通过搜索类似循环的解决方案,我找不到任何类似的东西。

提前致谢!

标签: r

解决方案


calculation_max = 8493853224
step = 0.01
P_bar = 1 
while(calculation < calculation_max){
  calculation = sum(db[, Quantity * (P_bar^0.15)])
  P_bar = P_bar + step
}

推荐阅读