Dplyr:如何以(非常)简洁的方式获得对向量的最后一次观察?

ℕʘʘ*_*ḆḽḘ 5 r dplyr

考虑下面的例子

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) 中的错误:不支持的向量类型语言

这里有什么问题?谢谢!