【问题标题】:Can the function getSymbols() take a variable instead of the ticker itself?函数 getSymbols() 可以采用变量而不是股票代码本身吗?
【发布时间】:2013-10-15 05:57:09
【问题描述】:

我想循环浏览一些公司股票代码的 CSV 并下载它们各自的股票代码数据。

到目前为止,我已将变量“ticker”定义如下:

ticker <- companyList[1, 'Symbol']

当我在屏幕上打印 'ticker' 时,它显示第一个股票代码非常好,但是当我尝试将ticker 变量传递给 quantmod 的 getSymbols 函数时,我得到一个错误。

getSymbols(ticker)
Error in do.call(paste("getSymbols.", symbol.source, sep = ""), list(Symbols =   current.symbols;  : 
 could not find function "getSymbols.940"

我的语法有错误吗?还有其他方法可以做到这一点吗?有什么书推荐吗?

【问题讨论】:

    标签: r quantmod


    【解决方案1】:

    最简单的方法是指定一个环境,例如假设您有一个带有代码的向量,然后您可以执行以下操作:

    # tickers example
    tik <- c("MMM", "ABT", "ABBV", "ANF", "ACT")
    
    # new environment
    stockData <- new.env() 
    
    # download data
    getSymbols(tik, env = stockData)
    

    您可以通过索引来访问股票:例如:

    stockData$MMM
    
               MMM.Open MMM.High MMM.Low MMM.Close MMM.Volume MMM.Adjusted
    # 2007-01-03    77.53    78.85   77.38     78.26    3781500        65.42
    # 2007-01-04    78.40    78.41   77.45     77.95    2968400        65.16
    # 2007-01-05    77.89    77.90   77.01     77.42    2765200        64.72
    # 2007-01-08    77.42    78.04   76.97     77.59    2434500        64.86
    # 2007-01-09    78.00    78.23   77.44     77.68    1896800        64.93
    # 2007-01-10    77.31    77.96   77.04     77.85    1787500        65.07
    

    所有其他股票都一样。

    参见此处:Quantmod

    编辑

    对于导出,您可以使用以下内容:

    # this will export 
    lapply(stockData, function(x){
      write.csv(x, file=paste0(gsub(".Open", "", names(x)[1]), ".csv"))
        })
    
    # the data can be found in the folder (execute the function!!!)
    getwd()
    

    【讨论】:

    • 感谢您的回答!但我希望遍历我的 CSV 并从我的 CSV 中的所有数百个代码中下载数据。
    • 您的 CSV 文件是什么样的? ...一个小例子会有所帮助。您应该能够从 CSV 中提取代码名称。您可以下载与上述相同的数据(您不需要循环,R 是矢量化的)。之后,您只需要一个函数来编写 CSV,例如。 write.table
    • 它的结构是符号名称。例如,如果我执行ticker
    • 我不确定,但试试ticker &lt;- unlist(companyList[1:5, 'Symbol'])
    • 谢谢!它仍然无法正常工作,所以我想我会硬着头皮手动输入它们。您的初始帖子有效,但我想避免输入数百个代码。我真的很感谢你的帖子!
    猜你喜欢
    • 2018-04-02
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多