我困扰于一个小的quantmod问题;如果任何人都可以建议调整我的代码,我真的很感激。我不知道这样的程序;也许这就是为什么我想念这个明显的原因由于getSymbols
以字符串作为输入(例如“YHOO”),但是仅返回YHOO(不含引号)作为保存数据的xts对象,所以出现问题。此外,对于市场指数,雅虎在代码字符串中包含一个插入符号(例如“^ GSPC”),但quantmod将普通的GSPC作为数据对象返回。Quantmod将代码保存到循环或提供的文件中
我想下载并保存到单个二进制文件中的多个代理商的数据。这是为了创建一个可以从存储在磁盘上的数据起作用的工作环境,而不是必须要求互联网访问。
我试着写功能:
buildhist <- function(x,start,end) {
getSymbols(x, from=start, to=end, adjust=TRUE)
save(get(x), file= paste(x, "hist.rda", sep="_"), ascii = FALSE)
}
然后使用
require(quantmod)
tckr <- c("YHOO","XLB")
lapply(tckr,buildhist,start="1995-01-01",end="2011-11-30")
但是,它的错误出在保存命令(说 “对象‘获得(x)的’未找到”)。如果我不使用get(x)
,则save
命令将仅将字符串名称保存为字符串,因此我无法使用该名称。没有其他版本,如save(noquote(x), file=paste(x, "hist.rda", sep="_"), ascii=FALSE)
也可以。
我应该使用什么命令,以便使用与quantmod最初返回的相同对象名称保存股票代码数据?在我上面的代码中,我甚至没有试图解决另一个问题 - 如果它存在,从名称中剥离脱字符号。任何指向这一点的人都会非常感激。
非常感谢Joshua。我试过这个。问题在于对象名称现在存储为y而不是XLB。所以,当我在循环中执行此操作时,所有代码都会保存为y,并且当我从循环中将它们从磁盘加载回来时,它们都是y。我需要重新加载和访问数据,就像我下载新鲜数据后一样。所以,当我进入XLB时需要数据。 – Tatha 2011-12-19 14:18:32
非常感谢指向gsub命令的指针。 – Tatha 2011-12-19 14:19:25
我没有使用quantmod,但手册似乎暗示'getSymbols'不会返回任何内容,只需将该项目加载到环境中即可。这就是为什么我在下面提出我的'lapply'版本的原因。如果我错了,请纠正我 - 我不想让人误入歧途。 – 2011-12-19 14:23:42