r - 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
。有没有更好的方法来做到这一点?
如果之前有人问过这个问题,我深表歉意。在我的辩护中,通过搜索类似循环的解决方案,我找不到任何类似的东西。
提前致谢!
解决方案
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
}
推荐阅读
- python - 从普通函数调用的生成器函数
- php - Doctrine PDO 总是使用 mysql 的事务,是否可以禁用它?
- python - R的名称功能是否等于Pandas df.columns?
- ios - 在 Firebase 电话身份验证上显示错误弹出窗口“出了点问题,请重试”
- python - NameError:在封闭范围内赋值之前引用了自由变量“d”
- c - 使用指针的数组总和
- java - Python中两个图像之间的比较
- google-colaboratory - 没有名为“aeneas.executetask”的模块
- c++ - MPI 测试程序陷入无限循环
- flutter - 颤动中的BottomNavigationBarItem背景颜色