2017-02-20 2 views
0

Nutzen der Ressourcen im Forum gepostet, ich habe es geschafft, ein Skript zu erstellen, das Dateien in Objekte der XTS-Klasse transformiert. Dies ist jedoch eine Liste dieser Objekte. Letztendlich möchte ich diese Dateien in separate Objekte xts transformieren. Was muss ich eine Änderung in das Skript eingeben, dass sie als separate Objekte erschienen, jeder von ihnen der XTS-Klasse?Aufspalten Liste von Xts in separaten Objekten

gibt es Skript:

files <- list.files(pattern="*.mst") 
listmst <- vector("list", length(files)) 
names(listmst)<- files 
for (i in 1:length(files)) { 
    temp <- read.zoo(files[i], sep=",", header=TRUE, 
        index.column=1, format="%Y%m%d", tz="", 
        colClasses = rep(c("NULL","character", "numeric"), c(1,1,5))) 
    listmst[[files[i]]]<- as.xts(temp) 
} 
rm(temp,files) 

csv-Dateien tranform: https://www.dropbox.com/s/paql3y0gm5gve3z/pourek.rar?dl=0

Antwort

0

Sie brauchen so etwas wie assign verwenden, um ein Objekt mit dem Symbolnamen zu erstellen. Zum Beispiel:

files <- list.files(pattern = "*.mst") 
for (f in files) { 
    # Create symbol from file name 
    Symbol <- gsub("\\.mst", "", basename(f)) 
    # Ensure it's a valid R name 
    Symbol <- make.names(Symbol) 
    # Read data from file 
    temp <- read.zoo(f, sep=",", header=TRUE, format="%Y%m%d", tz="", 
        colClasses = rep(c("NULL","character", "numeric"), c(1,1,5))) 
    # Clean up column names 
    colnames(temp) <- gsub("^X\\.|\\.$", "", colnames(temp)) 
    # Create object named `symbol` containing data from `temp` 
    assign(Symbol, as.xts(temp)) 
} 
rm(Symbol, temp, f) 

Jetzt sollten Sie dies in Ihrem Arbeitsbereich sehen:

R> ls() 
[1] "ABPL"  "AILLERON" "ALIOR"  "ALMA"  "ALTA"  
[6] "ALTERCO" "files"  "KREDYTIN" "KREZUS"  "KRKA"  
[11] "KRUK"  "KRUSZWICA" "MABION"  "MAKARONPL" "MANGATA" 
[16] "MARVIPOL" "MASTERPHA" "MBANK"  "MBWS"  "MCI"  
[21] "MCLOGIC" "MDIENERGIA" "MEDIACAP" "MEDIATEL" "X11BIT"  
[26] "X4FUNMEDIA" 
R> head(ABPL) 
      OPEN HIGH LOW CLOSE VOL 
2006-09-21 11.54 12.19 11.50 11.70 844641 
2006-09-22 11.69 11.69 11.25 11.60 53033 
2006-09-25 11.49 11.83 11.49 11.83 125607 
2006-09-26 11.90 12.05 11.90 12.04 104956 
2006-09-27 12.09 12.09 11.70 11.95 69062 
2006-09-28 11.70 12.00 11.65 12.00 37466 

Beachten Sie, dass alle Symbole, die mit einer Reihe jetzt mit einem „X“ beginnen beginnen, weil R-Objekte, die mit starten eine Zahl ist nicht "syntaktisch gültig".

+0

Das ist genau das Ergebnis, das ich gesucht habe. Es dauert Tage, bevor ich den Code vollständig verstanden habe. Vielen Dank . –

Verwandte Themen