Quiero leer tres archivos diferentes en xlsx y guardarlos en tres marcos de datos diferentes llamados excel1, excel2 y excel3. ¿Cómo puedo hacer eso? Creo que debería ser algo como esto:

files = list.files(pattern='[.]xlsx') #There are three files.

for (i in 1:files){
    "excel" + i =read.xlsx(files[i])
}
3
Captain Nemo 7 feb. 2015 a las 16:27

3 respuestas

La mejor respuesta

Le sugiero que use una lista en lugar de crear 3 variables en el espacio de trabajo actual:

dfList <- list()
for (i in 1:files){
    dfList[[paste0("excel",i)]] <- read.xlsx(files[i])
}

Entonces puedes acceder a ellos de esta manera:

dfList$excel1
dfList$excel2
dfList$excel3

O:

dfList[[1]]
dfList[[2]]
dfList[[3]]

Pero, si realmente desea crear nuevas variables, puede usar assign:

for (i in 1:files){
    assign(paste0("excel",i), read.xlsx(files[i]))
}
# now excel1, excel2, excel3 variables exist...
2
digEmAll 7 feb. 2015 a las 13:52

Si alguien intenta usar este código, estos parámetros son realmente útiles:

  library(xlsx)

  files = list.files(pattern='[.]xlsx')
  dfList <- list()

  for (i in 1:length(files)){
      dfList[[paste0("excel",i)]] <- read.xlsx(files[i],header=T,stringsAsFactors=FALSE,sheetIndex = 1)
  }
0
Captain Nemo 4 jun. 2015 a las 14:13

También puede usar plyr y es una buena práctica mencionar el entorno en el que desea crear la variable:

library(plyr)
l_ply(1:length(files), function(i) assign(paste0('excel',i),read.xlsx(files[i]), envir=globalenv()))
2
Colonel Beauvel 7 feb. 2015 a las 14:12