为什么将R中的rollapply函数应用于矢量时会返回矩阵?

问题描述

我每天都有一点财务数据。类似于以下内容

head(df)

tibble [2,871 x 2] (S3: tbl_df/tbl/data.frame)
Price | Volatility
15.4    17.5
14.7    17.8
14.4    17.7
14.9    17.8
...     ...

我写了一个计算z分数的函数

zscore <- function(x) {
  z <- (x-mean(x))/sd(x)
  return(z)
}

我想添加两列,一列用于计算每一行的z得分,另一列用于计算255个工作日(即大约1个日历年)内的滚动z得分

我编写了以下代码,返回了错误消息:

df %>%
  mutate(full_zscore = zscore(Volatility),roll_zscore = rollapply(Volatility,255,FUN = zscore,align = "right"))

Error: Invalid index: out of bounds

在进一步调查中,我注意到rollapply函数返回了matrix,因此为什么我会收到错误消息。

有人可以帮我理解为什么rollapply(df$Volatility,alighn = "right")在新的变量列上返回矩阵而不是滚动的z分数吗?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)