【发布时间】:2013-08-28 07:48:19
【问题描述】:
我正在研究一些动态问题(关于使用贝叶斯规则更新信念)并寻求“无循环”解决方案来加快计算速度,因为我当前使用 for 循环的解决方案非常慢。
假设我有一个数据框或矩阵,对于每一行,我都想做同样的计算。但是,r 行的计算需要在前面的r-1 行计算中生成的输出。该过程可以通过以下方式说明:
假设我有一个R by n 矩阵、MA 和一些初始变量y0:
[input] MA[1,] + y0 => [output] y1[input] MA[2,] + y1 => [output] y2[input] MA[3,] + y2 => [output] y3- ....
最简单的例子之一可能是n! 的计算。 n! = n * (n-1)! 的值,其中(n-1)! 是前面计算的结果。
我想出的第一个函数是apply 系列,但应用函数不能像我现在这样应用于递归(或动态)操作;它只是对不同的输入重复相同的计算,但不会向前传递输出。不确定我们是否可以使用任何其他技巧。任何天才都可以为这个特定问题提出一个无循环的解决方案吗?
【问题讨论】:
-
请提供一些示例输入数据和预期输出。几行应该没问题。您还应该从 base R 中探索
within。 -
您的循环很慢可能是因为您不断地复制。阅读 Patrick Burns 的 burns-stat.com/pages/Tutor/R_inferno.pdf,您会受益匪浅。