【问题标题】:How do I store data from getSymbols (quantmod library) to a list?如何将数据从 getSymbols(quantmod 库)存储到列表中?
【发布时间】:2018-10-13 09:55:45
【问题描述】:

这是我正在运行的代码

library(quantmod)
library(tseries)
Stocks={}
companies=c("IOC.BO","BPCL.BO","ONGC.BO","HINDPETRO.BO","GAIL.BO")
for(i in companies){
   Stocks[i]=getSymbols(i)
}

我正在尝试获取从getSymbols 获得的数据帧列表以存储在Stocks 中。 问题是getSymbols直接将dataframes保存到全局环境Stocks只保存companies中的字符到列表中。

如何将全局环境中的数据框保存到列表中?

任何帮助表示赞赏..提前致谢!

【问题讨论】:

    标签: r list quantmod


    【解决方案1】:

    另一个选项是lapply

    library(quantmod)
    Stocks <- lapply(companies, getSymbols, auto.assign = FALSE)
    Stocks <- setNames(Stocks, companies)
    

    来自?getSymbols

    auto.assign : 应该将结果加载到 env 如果为 FALSE,则返回结果。从 0.4-0 开始,这与设置 env=NULL 相同。默认为真


    使用for 循环你可以做到

    companies <- c("IOC.BO", "BPCL.BO", "ONGC.BO", "HINDPETRO.BO", "GAIL.BO")
    Stocks <- vector("list", length(companies))
    
    for(i in seq_along(companies)){
      Stocks[[i]] <- getSymbols(name, auto.assign = FALSE)
    }
    Stocks
    

    【讨论】:

    • 快速提问,这条线到底在做什么? Stocks &lt;- vector("list", length(companies)) "list" 在这里应该是什么意思?
    • @NikhilGopal 这将创建一个长度为 5(公司长度)的空列表。 Stocks 为输出分配空间。这比增长向量更有效。 vector() 有两个参数:向量的类型(“逻辑”、“整数”、“双精度”、“字符”等)和向量的长度。
    【解决方案2】:

    在我的 quantmod (0.4.0) 版本中,需要在函数的参数中设置env=NULL,然后返回整个数据帧

    【讨论】:

      【解决方案3】:

      使用以下参数作为 getSymbols(i, auto.assign=FALSE)

      【讨论】:

      • 我这样做了,但现在我在Stocks 的每个索引中只得到一个值,它不会将整个数据帧保存到索引 1:/
      猜你喜欢
      • 1970-01-01
      • 2018-05-22
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-05
      相关资源
      最近更新 更多