2012-09-02 10 views
5

Estoy tratando de cargar varios símbolos usando un archivo csv en lugar de descargar desde Yahoo. El código original funciona muy bien y utilizaCargar múltiples símbolos usando csv con quantmod

load.packages('quantmod') 
tickers = spl('TLT,IWM,GLD') 
data <- new.env() 
getSymbols(tickers, src = 'yahoo', from = '1980-01-01', env = data, 
      auto.assign = T) 

cuando trato con el siguiente código, sin embargo, el resultado es "subíndice fuera de límites" errores más adelante en la secuencia de comandos:

load.packages('quantmod') 
tickers = spl('TLT,IWM,GLD') 
data <- new.env() 
getSymbols(tickers, src="csv", dir= "C:/Users/Admiral/Downloads/", 
      env = data, auto.assign = T) 

Cualquier persona tiene pensamientos por qué el segundo conjunto de códigos no funcionará? Para probar, acabo de descargar datos csv de Yahoo y guardados localmente (Windows). No obtengo los errores del subíndice si solo uso un archivo csv. También he probado el código de abajo, pero consigo los mismos errores más adelante en la secuencia de comandos:

setSymbolLookup(tickers=list(src="csv", dir= "C:/Users/Admiral/Downloads/")) 
getSymbols(tickers, auto.assign = T, from = '1980-01-01', env=data) 
+0

Parece un código de inversor sistemático. Ejecute 'rm (index.xts)' y luego pruebe su código nuevamente. (http://stackoverflow.com/questions/12124683/r-index-or-index-xts-changes-the-values-of-date-of-a-time-series-why/12125165#12125165) – GSee

+0

Sí, es código SI, aunque probé tu sugerencia y no pareció tener ningún efecto. – AdmiralF

+0

Si quiere que descubramos por qué getSymbols.csv no funciona para usted, entonces deberá mostrarnos algunos de sus archivos CSV. O tal vez podrías mostrar cómo los creaste. – GSee

Respuesta

2

Me gustaría hacer esto utilizando el paquete FinancialInstrument

require('quantmod') 
require('FinancialInstrument') 
tickers <- c("TLT", "IWM", "GLD") 
data <- new.env() 
getSymbols(tickers, src = 'yahoo', from = '1980-01-01', env = data) 

# Now save the data in a directory 
tmpdir <- tempdir() 
saveSymbols.common(tickers, tmpdir, env=data) 

#remove the data  
rm(list=tickers, pos=data) 
ls(data) # see that there is nothing there 
# Now load the data back from disk 
getSymbols(tickers, src='FI', dir=tmpdir, env=data, split_method='common') 
ls(data) 

Si desea utilizar getSymbols.csv, sus datos tienen debe tener la fecha y 6 columnas (OHLCVA)

#write data to csv files on disk 
for (i in seq_along(tickers)) {  
    write.zoo(get(tickers[i], pos=data), file=paste0(tmpdir, "/", tickers[i], ".csv"), sep=",") 
} 
rm(list=tickers, pos=data) #remove from memory 
getSymbols(tickers, src='csv', dir=tmpdir)#, env=data) #load from csv files 
+0

aunque, eso lo guarda como archivos 'rda', no CSVs – GSee

+0

Gracias por la ayuda. Lo anterior funciona, pero ¿puedo modificar el archivo rda antes de ejecutar el script (es decir, cambiar el precio de cierre)? Estoy tratando de usar datos modificados en lugar de los datos de Yahoo. – AdmiralF

+0

Sí, o puede modificarlos antes de guardarlos. – GSee

Cuestiones relacionadas