r - 为什么 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)
}
我想添加两个额外的列,1) 计算每一行的 z 分数,另一个计算 255 个工作日内的滚动 z 分数(即大约 1 个日历年)
我编写了以下代码,它返回错误消息:
df %>%
mutate(full_zscore = zscore(Volatility),
roll_zscore = rollapply(Volatility, 255, FUN = zscore, align = "right"))
Error: Invalid index: out of bounds
经过进一步调查,我注意到 rollapply 函数返回 a matrix
,因此我收到错误消息。
谁能帮我理解为什么rollapply(df$Volatility, 255, FUN = zscore, alighn = "right")
在新变量列上返回矩阵而不是滚动 z 分数?
谢谢!
解决方案
推荐阅读
- mysql - sql删除多行不同的列
- ios - UIPageViewController 作为子视图,横向双页,纵向单页
- r - vegdist 函数无法处理包含 0 的丰度数据集
- r - 从R中数据框的列中删除字符串中的特定字符
- reactjs - 使用 React Js 将数据发送到多个 API 的最佳方式
- javascript - 赛普拉斯:“TypeError:form.submit 不是函数”
- php - 如何以编程方式将 ACF 组添加到 Wordpress 的后端?
- laravel - 使用 foreach 在数组迭代中获取对象值
- javascript - Javascript - 匹配多行的正则表达式
- java - Maven 无法解决依赖关系