来自quantmod的股息文件

时间:2015-01-05 01:55:14

标签: r quantmod

这将下载多个股票的股息数据,每个股票都在一个单独的变量中。 R数据文件名是股票的名称,后跟" .div"。即,对于Microsoft,该文件将是" MSFT.div"。

require(quantmod)
DJ30_symbols.ls <- c("MSFT", "IBM")
nDiv <- length(DJ30_symbols.ls)
for (i in 1:nDiv) {
  cat("Downloading ", i, " out of ", nDiv, "\n")
  getDividends(DJ30_symbols.ls[i], from = "1970-01-01", to = Sys.Date())
}

当我尝试将单个文件保存为工作目录中的csv文件时,如下所示:

write.zoo(paste(DJ30_symbols.ls[i], ".div", sep=' '),
  file = paste(DJ30_symbols.ls[i], ".csv", sep=''), index.name = "date")

我保存文件,但保存的数据不是从雅虎下载的股息,而是符号名称(例如&#34; MSFT.div&#34;)。如果我这样做,我会在csv文件中获得下载的股息信息:

write.zoo(MSFT.div, file = "MSFT_div.csv", index.name = "date")

有什么方法可以使用变量名读取数据并保存文件吗?

1 个答案:

答案 0 :(得分:0)

代码paste(DJ30_symbols.ls[i], ".div", sep=' ')是一个字符串,而不是包含被除数据的对象。您可以使用get检索具有该名称的对象,但如果您只是getDividends返回对象而不是auto.assign它会更容易。

require(quantmod)
DJ30_symbols.ls <- c("MSFT", "IBM")
for (i in seq_along(DJ30_symbols.ls)) {
  cat("Downloading ", i, " out of ", nDiv, "\n")
  obj <- getDividends(DJ30_symbols.ls[i], from="1970-01-01", auto.assign=FALSE)
  write.zoo(obj, paste0(DJ30_symbols.ls[i], ".csv"), index.name="date")
}