2012-04-14 6 views
2

Was ich tun möchte, ist ziemlich einfach, aber ich konnte es nicht herausfinden. Ich dachte, ich könnte etwas Ähnliches tun wie beschrieben hereadjustOHLC - brauche eine Lösung, um den Vektor der Ticker zu durchlaufen

Ich habe einen Zeichenvektor von Tickern, die xts OHLC Objekte von getSymbols zurückgegeben werden. Ich möchte durch jeden Ticker in Symbolen Schleife und übergeben Sie das Symbol adjustOHLC für Splits anzupassen:

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

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

Es scheint adjustOHLC nicht greifen der Wert der Variablen ‚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' 

Wenn ich get(symbols) verwende, bekomme ich das gleiche Ergebnis (ähnlicher Ansatz wurde in dem Link verwendet, den ich oben in diesem Beitrag zeige):

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' 

Ich dachte, ich könnte auch lapply verwenden, um dies schneller zu machen, aber denke, ich stecke zuerst mit dem obigen Problem fest.

lapply(symbols, function(x) adjustOHLC(x, adjust=c("split"), use.Adjusted=FALSE))

Scheint einfach genug - ich entschuldige mich, wenn dies so trivial ist. Schätze die Hilfe.

Antwort

3

Das x Argument von adjustOHLC sollte ein XTS-Objekt sein. Also, Sie müssen get verwenden, um es zu bekommen. Wenn das Yahoo-Tickersymbol jedoch anders ist als der Name des xts-Objekts (get(symbol) in diesem Fall), müssen Sie das Argument symbol.name verwenden. Außerdem müssen Sie die Werte innerhalb Ihrer for-Schleife zuweisen, da adjustOHLC nicht "auto.assign" wie getSymbols tut.

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

Da Sie lapply, hier mit erwähnt ist, wie Sie es

adjusted.list <- lapply(symbols, function(x) { 
    adjustOHLC(get(x, pos=.GlobalEnv), symbol.name=x, adjust=c("split"), 
      use.Adjusted=FALSE) 
}) 
names(adjusted.list) <- symbols 
verwenden könnte