2013-10-12 7 views
6

Bei der Ausführung der folgenden Befehle wird der Bindestrich im Ticker HM-B.ST als ein Minuszeichen interpretiert. Ich habe versucht, das XTS-Objekt in etwas anderes umzubenennen, aber nicht erfolgreich. Kennt jemand eine Lösung dafür?Umgang mit Bindestrichen in Yahoo Finanz Ticker in Quantmod

>library(quantmod) 
>getSymbols("HM-B.ST") 
>chartSeries(HM-B.ST) 
Error in inherits(x, "xts") : object 'HM' not found 
+0

Closing dies als Duplikat einer ähnlichen Frage vor einigen Monaten gefragt. –

Antwort

7

Der sauberste Weg, damit umzugehen ist nicht automatische Zuweisung Verhalten auf getSymbols() 'default verlassen und stattdessen das Zeitreihen-Objekt zu einem Standardnamen Ihrer Wahl zuweisen. Zum Beispiel:

HM.B.ST <- getSymbols("HM-B.ST", auto.assign=FALSE) # h.t. Joshua Ulrich 
chartSeries(HM.B.ST) 

Wenn aus irgendeinem Grund Sie tun die Zeitreihen wollen seine Neben Standard Doppelnamen behalten, können Sie darauf zugreifen, indem Sie:

chartSeries(`HM-B.ST`) 

Die Grund es funktioniert, dass die Backticks an den R-Parser signalisieren, dass die Zeichen zwischen ihnen als ein einzelner Name (aka Symbol) analysiert werden sollen, nicht als zwei Namen durch den Subtraktionsoperator getrennt.

Um diesen Punkt nach Hause zu fahren einmal und für alle, versuchen, etwas wie folgt aus:

assign("a really stupidly constructed name!*&^", 5) 
`a really stupidly constructed name!*&^` 
# [1] 5 
+0

Awsome Antwort. Vielen Dank! –

+2

@ johansson.lc können Sie auch 'get' verwenden. z.B. 'chartSeries (get (" HM-B.ST "))' ... oder, für einen besseren Charttitel: 's <-" HM-B.ST "; chartSeries (get (s), name = s) ' – GSee

+0

@GSee vielen Dank, das hat auch gut funktioniert. –