我想做的事情相当容易,但我无法弄清楚。我以为我可以做一些与here
概述的类似的事情我有一个代码字符向量,它们是由getSymbols
返回的xts OHLC对象。我想循环遍历符号中的每个股票代码并将符号传递给adjustOHLC
以调整分割:
symbols = c("FCX", "SPY")
for(symbol in symbols){
return(adjustOHLC(symbol,adjust =c("split"), use.Adjusted=FALSE))
}
adjustOHLC
似乎抓取变量'symbol'的值:
debug: div <- getDividends(symbol.name)
Browse[2]> symbol.name
[1] "symbol"
Browse[2]>
Error in download.file(paste(yahoo.URL, Symbol.name, "&a=", from.m, "&b=", :
cannot open URL 'http://ichart.finance.yahoo.com/table.csv?s=symbol&a=0&b=01&c=1970&d=3&e=14&f=2012&g=v&ignore=.csv'
In addition: Warning message:
In download.file(paste(yahoo.URL, Symbol.name, "&a=", from.m, "&b=", :
cannot open: HTTP status was '404 Not Found'
如果我使用get(symbols)
,我会得到相同的结果(我在本文顶部显示的链接中使用了类似的方法):
for(symbol in symbols){
return(adjustOHLC(get(symbol),adjust =c("split"), use.Adjusted=FALSE))
}
debug: div <- getDividends(symbol.name)
Browse[2]> symbol.name
[1] "get(symbol)"
Browse[2]>
Error in download.file(paste(yahoo.URL, Symbol.name, "&a=", from.m, "&b=", :
cannot open URL 'http://ichart.finance.yahoo.com/table.csv?s=get(symbol)&a=0&b=01&c=1970&d=3&e=14&f=2012&g=v&ignore=.csv'
In addition: Warning message:
In download.file(paste(yahoo.URL, Symbol.name, "&a=", from.m, "&b=", :
cannot open: HTTP status was '404 Not Found'
我认为我也可以利用lapply
来加快速度,但我认为我首先遇到了上述问题。
lapply(symbols, function(x) adjustOHLC(x, adjust=c("split"), use.Adjusted=FALSE) )
似乎很容易 - 如果这是如此微不足道,我道歉。感谢帮助。
答案 0 :(得分:3)
x
的{{1}}参数应该是xts对象。因此,您需要使用adjustOHLC
来获取它。但是,如果yahoo股票代码符号与xts对象的名称不同(在这种情况下为get
),则需要使用get(symbol)
参数。此外,您需要在for循环中指定值,因为adjustOHLC不会像symbol.name
那样“自动分配”。
getSymbols
既然您提到了使用lapply,那么就可以使用它了
symbols = c("FCX", "SPY")
getSymbols(symbols, src='yahoo')
for(symbol in symbols){
assign(symbol,adjustOHLC(get(symbol, pos=.GlobalEnv), symbol.name=symbol,
adjust=c("split"), use.Adjusted=FALSE))
}