我想循环一些公司代码的CSV并下载各自的股票代码数据。
到目前为止,我已将变量'ticker'定义如下:
ticker <- companyList[1, 'Symbol']
当我在屏幕上打印'ticker'时,它显示第1个股票行情完好,但是当我尝试将ticker变量传递给quantmod的getSymbols函数时,我收到错误。
getSymbols(ticker)
Error in do.call(paste("getSymbols.", symbol.source, sep = ""), list(Symbols = current.symbols; :
could not find function "getSymbols.940"
我的语法是否有错误?还有另一种方法可以做到这一点吗?任何书籍推荐?
答案 0 :(得分: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
HTH
修改强>:
用于导出,您可以使用以下内容:
# 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()