在R中的XTS对象中创建$1000列的增长

在R中的XTS对象中创建$1000列的增长,r,xts,R,Xts,我正在努力完成一项我认为很简单的任务。我正在计算一些投资回报,并希望在回报栏旁边创建一个列,显示1000美元的增长。理想情况下,这: Index Return 4/27/90 -0.011444191 989 5/30/90 0.000582282 989 6/28/90 0.007011319 996 7/30/90 0.005969896 1,002 10/30/90 0.007221412

我正在努力完成一项我认为很简单的任务。我正在计算一些投资回报,并希望在回报栏旁边创建一个列,显示1000美元的增长。理想情况下,这:

Index       Return      
4/27/90     -0.011444191    989 
5/30/90     0.000582282     989 
6/28/90     0.007011319     996 
7/30/90     0.005969896     1,002 
10/30/90    0.007221412     1,009 
第三列等于上面的值乘以(1+返回),然后填充。因此,1009的值是通过乘以1002*(1+0.005969896)得到的

我试着用滞后函数来做这件事,但是我的头因为盯着它看太久而在旋转

我确实成功地获得了1009的最终数字:

 Account = 1000
 for (i in na.omit(sample$Return)){
   Account  = (1+i) * Account
 }
但是,我希望在xts对象中将running total作为一列。如何做到这一点

这将创建我在上表中使用的xts对象,不包含第3列

sample <- structure(c(-0.0114441907965878, 0.000582281990849955, 0.00701131947964186, 
0.00596989588048895, 0.00722141248178086), .indexCLASS = "Date", tclass = "Date", tzone = "UTC", src = "yahoo", updated = structure(1414972280.65536, class = c("POSIXct", 
"POSIXt")), index = structure(c(641174400, 644025600, 646531200, 
649296000, 657244800), tclass = "Date"), .Dim = c(5L, 1L), .Dimnames = list(
    NULL, "Return"), class = c("xts", "zoo"))

sampleTry
cumprod

sample$Account <- 1000 * cumprod(1+sample$Return)
sample
                 Return   Account
1990-04-27 -0.011444191  988.5558
1990-05-30  0.000582282  989.1314
1990-06-28  0.007011319  996.0665
1990-07-30  0.005969896 1002.0130
1990-10-30  0.007221412 1009.2489
示例$Account