如何在R Programming中从多个文件夹中读取多个excel文件

时间:2018-02-16 23:37:17

标签: r excel

这是我的代码:

library(readxl)
file.list <- list.files(pattern='subject*.xlsx')
df.list <- lapply(file.list, read_excel)

我的文件夹结构如下:

C:\Users\sangu\Documents\R\Quality Control\Methodist microsurgery with output\subject01    
C:\Users\sangu\Documents\R\Quality Control\Methodist microsurgery with output\subject02    
C:\Users\sangu\Documents\R\Quality Control\Methodist microsurgery with output\subject03

在每个文件夹中,Excel文件名将采用以下结构:

Subject01_tai.xlsx   
Subject02_tai.xlsx        
Subject03_tai.xlsx

我需要从3个excel文件中读取一列。

2 个答案:

答案 0 :(得分:0)

如果每个文件夹只有一个excel文件而你的原始file.list是文件夹列表,那么这应该有效:

for(i in 1:length(file.list)){
  setwd(file.list[i])
  temp_file <- list.files()
  eval(parse(text=paste0("file_",i," <- read_excel(temp_file)")))
}

将读入每个文件并将其保存到名为file_1,file_2等的变量

答案 1 :(得分:0)

尝试这样的事情:

library(openxlsx)

path.to.sub.folders <- "C:/Users/sangu/Documents/R/Quality Control/Methodist microsurgery with output/"
folders.to.read <- paste0(path.to.sub.folders, "subject0", 1:3)
files.to.read <- paste0("Subject0", 1:3, "_tai.xlsx")

### Alternative ###
folders.to.read <- list.dirs(path.to.sub.folders)
#### ---- ####

for(k in 1:length(files.to.read)){
tmp.file.name <- paste0(folders.to.read[k], "/", files.to.read[k])
tmp.df <- read.xlsx(tmp.file.name, sheet = 1)
assign(files.to.read[k], tmp.df)
rm(k, tmp.df, tmp.file.name)
}
相关问题