这是我的代码:
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文件中读取一列。
答案 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)
}