2

我想做的事情相当容易,但我无法弄清楚。我想我可以做类似于这里概述的事情

我有一个由 .xts 返回的 xts OHLC 对象的股票代码字符向量getSymbols。我想遍历符号中的每个代码并将符号传递给以adjustOHLC调整拆分:

symbols = c("FCX", "SPY")

for(symbol in symbols){
  return(adjustOHLC(symbol,adjust =c("split"), use.Adjusted=FALSE))
}

似乎adjustOHLC没有抓住变量“符号”的值:

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) )

似乎很容易 - 如果这太微不足道了,我深表歉意。感谢帮助。

4

1 回答 1

4

x参数adjustOHLC应该是一个 xts 对象。因此,您需要使用get它来获取它。但是,如果 yahoo 股票代码不同于 xts 对象的名称(get(symbol)在这种情况下),那么您需要使用该symbol.name参数。此外,您需要在 for 循环中分配值,因为 adjustOHLC 不像“auto.assign”那样getSymbols

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))
}

既然你提到了使用 lapply,这里是你如何使用它

adjusted.list <- lapply(symbols, function(x) {
  adjustOHLC(get(x, pos=.GlobalEnv), symbol.name=x, adjust=c("split"), 
             use.Adjusted=FALSE)
})
names(adjusted.list) <- symbols
于 2012-04-14T21:14:59.940 回答