2013-10-12 23 views
6

Quando si eseguono i seguenti comandi il trattino nel ticker HM-B.ST viene interpretato come un segno meno. Ho provato a rinominare l'oggetto xts con qualcos'altro, ma non ci sono riuscito. Qualcuno conosce una soluzione per questo?Come gestire i trattini nei ticker della finanza yahoo in Quantmod

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

chiusura di questo come un duplicato di una domanda simile chiesto un paio di mesi prima. –

risposta

7

Il modo più pulito per affrontare questo è quello di non fare affidamento su getSymbols() 'comportamento auto-assegnazione predefinita, e invece assegnare l'oggetto serie storica a un nome più standard di propria scelta. Per esempio:

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

Se per qualche motivo si fai vogliono la serie temporale di mantenere il suo nome con trattino by-default, è possibile accedervi facendo:

chartSeries(`HM-B.ST`) 

Il motivo funziona è che i backtick segnalano al parser R che i caratteri tra loro devono essere analizzati come un singolo nome (ovvero un simbolo), non come due nomi separati dall'operatore di sottrazione.

Per comprendere il rischio punto una volta per tutte, provare qualcosa di simile al seguente:

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

Risposta stupenda. Grazie mille! –

+2

@ johansson.lc potresti anche usare 'get'. per esempio. 'chartSeries (get (" HM-B.ST "))' ... o, per un titolo grafico migliore: 's <-" HM-B.ST "; chartSeries (get (s), name = s) ' – GSee

+0

@GSee grazie mille, anche questo ha funzionato bene. –