R:读取多个Excel文件,提取第一个工作表名称,并创build新的列

我有多个Excel文件,他们有独特的表名(在我的情况下创build文件的date)。 我批量读取它们,并需要将新表格名称分配给新列“id”中的每个文件。 我知道如何使数字ID,或ID =文件名,但不能find一种方法来获取表名作为ID。

library(readxl) library(data.table) file.list <- list.files("C:/Users/.../Studies/",pattern='*.xlsx') df.list <- lapply(file.list, read_excel) #id = numeric df <- rbindlist(df.list, idcol = "id") #Or by file name: attr(df.list, "names") <- file.list df2 = rbindlist(df.list,idcol="id") #How to get sheet names? 

如果您恰好只使用文件的第一张纸张,那么以下内容应该可以帮助您获取第一张纸张的名称作为数据框的id

 attr(df.list, "names") <- sapply(file.list, function(x) excel_sheets(x)[1]) 

但是,如果您正在考虑从所有可用工作表导入数据,则需要做更多工作,从创build数据框列表开始:

 df.list <- lapply(file.list,function(x) { sheets <- excel_sheets(x) dfs <- lapply(sheets, function(y) { read_excel(x, sheet = y) }) names(dfs) <- sheets dfs }) 

这应该创build一个列表,它应该包含文件中的所有可用数据。 主列表内的列表适当地以表名命名。 所以,你以后不需要改变任何属性。 但是要将数据框绑定在一起,您需要执行以下操作:

 rbindlist(lapply(df.list, rbindlist, id = "id")) 

我希望这certificate有用。