r - 在 R 中迭代复合返回(如 Excel 乘积函数)

标签 r excel

我正在尝试编写一个简单的函数来重现 Excel 中的 PRODUCT 函数,该函数可用于计算投资返回。给定一段时间内的返回向量(如下所示),我想计算整个持有期间的总返回。

library(scales)
vec=c(2.1,3.1,5,-2.3,1.7,-9.8)
vecpercent=percent(vec/100)

在 Excel 中,这将被计算为一个数组函数,如下所示:{=1+PRODUCT(B4:B9)-1},如果“vecpercent”中的返回值在单元格 B4 到 B9 中。这相当于 (1+r1) (1+r2)...(1+rn),其中 n 是周期数。

我试图用一个 for 循环来解决这个问题,我意识到这是 R 世界的禁忌。如果可能的话,我很想听听更好的方法。但是如果需要一个循环,我是否还需要创建一个“帮助”列,在其中将每个返回率与前一个返回率相乘?

谢谢你。

最佳答案

我认为您正在寻找(矢量化)cumprod功能:

cumprod(1 + vec / 100) - 1
# [1]  0.0210000  0.0526510  0.1052835  0.0798620  0.0982197 -0.0094058

如果您只查找最后一个值,可以使用 prod :
prod(1 + vec / 100) - 1
[1] -0.0094058

(您可以再次输入percent(),以获得漂亮的格式。)

关于r - 在 R 中迭代复合返回(如 Excel 乘积函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27750800/

相关文章:

r - 将元素追加到 R 函数中的列表

database - 在excel中创建数据库

vba - 在 Excel VBA 中使用 getElementsByClassName

r - 在 SparkR 中使用 CreateDataFrame 时出现 "Job aborted due to stage failure"

r - 为什么在 rmarkdown 的函数中使用时 kable 不打印

r - 如何将标题页和目录页与 knitr rmarkdown PDF 分开?

excel - 从 Dynamic CRM 获取数据的最简单方法

c# - 可存储在 Excel 中的值

excel - 从 Excel : ​ 导出后,在 XML 文件和 PowerShell 输出中发现奇怪的字符

r - 提高 R 和 ggplot2 中 EMF 输出的质量