r - 如何从 R 中 RollCor 的输出中切片数组?
问题描述
我正在尝试获得两个变量DGS10
和之间的滚动相关输出SP500
,但是我得到了每一行的相关矩阵输出。有没有办法对其进行切片以仅获得实际值 [0][1]。我是来自 Python 的 R 新手...
包和变量
library(quantmod)
getSymbols('DGS10',src='FRED')
getSymbols('SP500',src='FRED')
代码
```{r}
merge(DGS10, SP500) %>%
na.omit() %>%
roll_cor(width=5)
```
输出
DGS10 SP500
DGS10 1.0000000 0.8542177
SP500 0.8542177 1.0000000
, , 6
DGS10 SP500
DGS10 1.0000000 0.9104856
SP500 0.9104856 1.0000000
, , 7
DGS10 SP500
DGS10 1.0000000 0.9672053
SP500 0.9672053 1.0000000
期望的输出
5 0.8542177
6 0.9104856
7 0.9672053
解决方案
老实说,我第一次看到这样的数组 - [1:2, 1:2, 1:2496]
。我看到使用多维索引(如[1, 2, 1:2496]
. 它的长度为 9984 (2496 * 4),因此您可以使用以下方法提取所需的值:
merge(DGS10, SP500) %>%
na.omit() %>%
roll_cor(width=5) %>%
`[`(seq(2, length(.), 4)) %>%
as.data.frame()
因为它对你来说可能看起来有点模糊,因为你是新手,R
所以它相当于:
temp <-
merge(DGS10, SP500) %>%
na.omit() %>%
roll_cor(width=5)
temp[seq(2, length(temp), 4)] %>%
as.data.frame()
但我会建议你使用tidyquant
图书馆。然后你可以更清楚地得到你的结果:
library(tidyquant)
tq_get(c('DGS10', 'SP500'), get = 'economic.data') %>%
spread(symbol, price) %>%
na.omit() %>%
tq_mutate_xy(
x = DGS10,
y = SP500,
mutate_fun = runCor,
n = 5
)
推荐阅读
- python - TypeError: 'module' object is not callable error running pip install selenium
- python - 删除或忽略索引python
- javascript - JQuery 添加“d-none”类在关注另一个选项卡时未反映
- python - Blender 3D:导入 sklearn 和 yaml 等 python 模块会在已安装时出现错误 ModuleNotFoundError
- logging - Flutter 相当于 Timber + Crashlytics?
- django - “用户”对象没有属性“_committed”
- django - 如果在 Django 中没有结果,则过滤嵌套查询
- node.js - 如何让nodemon在崩溃时退出?
- memory - 使用 Box::from_raw() Box::into_raw() 往返 Rust 无效指针
- c# - 为什么 sqlCommand.ExecuteNonQuery() 没有捕捉到异常