2017-02-20 2 views
0

En exploitant les ressources affichées sur le forum, j'ai réussi à créer un script qui transforme les fichiers en objets de la classe xts. Cependant, ceci est une liste de ces objets. En fin de compte, je veux transformer ces fichiers en objets distincts xts. Qu'est-ce que je dois entrer dans un changement dans le script qu'ils sont apparus comme des objets séparés, chacun d'entre eux de classe xts?scinder la liste des xts dans des objets séparés

il y a script:

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) 

fichiers csv à Tranform: https://www.dropbox.com/s/paql3y0gm5gve3z/pourek.rar?dl=0

Répondre

0

Vous devez utiliser quelque chose comme assign pour créer un objet avec le nom du symbole. Par exemple:

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) 

Maintenant vous devriez voir dans votre espace de travail:

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 

Notez que tous les symboles qui commencent par un chiffre commencent maintenant avec un « X », parce que les objets R qui commencent par un nombre ne sont pas "syntaxiquement valides".

+0

C'est exactement le résultat que je cherchais. Quelques jours avant que je comprenne parfaitement le code. Merci beaucoup . –