如何读取多个.xlsx并在R中生成多个数据帧?

时间:2015-02-07 13:27:27

标签: r excel

我想在xlsx中读取三个不同的文件,并将它们保存在三个不同的数据框中,称为excel1,excel2和excel3。我怎样才能做到这一点?我认为它应该是这样的:

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

for (i in 1:files){
    "excel" + i =read.xlsx(files[i])
}

3 个答案:

答案 0 :(得分:2)

我建议您使用列表而不是在当前工作空间中创建3个变量:

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

然后您可以通过这种方式访问​​它们:

dfList$excel1
dfList$excel2
dfList$excel3

或:

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

但是,如果您真的想要创建新变量,可以使用assign函数:

for (i in 1:files){
    assign(paste0("excel",i), read.xlsx(files[i]))
}
# now excel1, excel2, excel3 variables exist...

答案 1 :(得分:2)

您也可以使用plyr,这是一个很好的做法,可以提及您要在其中创建变量的环境:

library(plyr)
l_ply(1:length(files), function(i) assign(paste0('excel',i),read.xlsx(files[i]), envir=globalenv()))

答案 2 :(得分:0)

如果有人试图使用此代码,则此参数非常有用:

  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)
  }