考虑下面的例子
return <- c(0.02,0.0,0.01,-0.04)
date <- c(1,2,3,4)
df_day <- data.frame(date,return)
> df_day
date return
1 1 0.02
2 2 0.00
3 3 0.01
4 4 -0.04
Run Code Online (Sandbox Code Playgroud)
我想复合回报,并在时间 4 获得复合回报。一个冗长的工作解决方案如下
df_agg1 <- df_day %>%
arrange(date) %>%
mutate(cumret = cumprod(1 + return) - 1,
compound = last(cumret)) %>%
filter(row_number() == 1)
> df_agg1
date return cumret compound
1 1 0.02 0.02 -0.011008
Run Code Online (Sandbox Code Playgroud)
我不明白为什么不能以下列方式缩短上面的代码:
df_agg2 <- df_day %>%
arrange(date) %>%
summarise(compound= last(cumprod(1 + return) - 1))
Run Code Online (Sandbox Code Playgroud)
在这里,我的代码应该返回一个值。事实上,我得到了累积乘积向量(减一)的最后一个值(因此,在时间 4)。
不幸的是我得到
eval(substitute(expr)、envir、enclos) 中的错误:不支持的向量类型语言
这里有什么问题?谢谢!
| 归档时间: |
|
| 查看次数: |
249 次 |
| 最近记录: |