【发布时间】:2021-04-04 19:29:40
【问题描述】:
我希望将一些 XTS 对象作为数据帧存储在 R 的列表中。
XTS 对象是使用 tidyquant 包收集的股票价格数据,我需要将这些对象转换为数据框并将它们存储在列表中。我有一个额外的要求,我只想保留每只股票的索引列和收盘价列。
我尝试使用 dplyr 语法来选择感兴趣的列,但我的代码无法选择大于 2 的列索引
Error: Can't subset columns that don't exist.
x Locations 3 and 4 don't exist.
i There are only 2 columns.
这是我正在使用的代码,但我很难理解为什么我无法从“强化”数据框中选择收盘价
pacman::p_load(tidyquant,tidyverse,prophet)
tickers = c("AAPL","AMZN")
getSymbols(tickers,
from = '2015-01-01',
to = today(),
warnings = FALSE,
auto.assign = TRUE)
dfList <- list()
for (i in tickers) {
dfList[[i]] <- fortify.zoo(i) %>%
select(c(1,5))
}
当我使用 fortify.zoo 将单个 XTS 对象转换为数据框时,我可以选择感兴趣的列,但当我遍历它们时却不能。
fortify.zoo(AAPL) %>% select(c(1,5)) %>% head(n = 10)
谁能帮助我了解我对这个问题的理解在哪里下降?
【问题讨论】:
-
我建议您使用Gabor's solution,它利用
getSymbols()的env参数并使用eapply()或lapply()通过迭代环境来创建列表,提取 (调整)关闭,并将其强化为 data.frame。