我想读取所有文件并将excel文件中的多张表加载到R,使用xlsx包。
我粘贴了下面的代码:
filelist <- list.files(pattern = "\\.xls") # list all the xlsx files
library(xlsx)
allxlsx.files <- list() # create a list to populate with xlsx data
for (file in filelist) {
wb <- loadWorkbook(file)
sheets <- getSheets(wb)
sheet <- sheets[['_']] # get sheets with field section reading
res <- readColumns(sheet, 1, 2, 114, 120, colClasses=c("character", "numeric"))
}
回溯() 1:readColumns(sheet,1,2,114,120,colClasses = c(“character”, “数字”))#6
有人可以告诉我如何继续吗?
答案 0 :(得分:0)
我认为你错误地对纸张进行了分组。
您可以在工作表名称上使用grep,以使用"_"
获取所有文件名。
我创建并使用了一个xlsx文件,其中包含5张带有下面名称的假设数据,用于演示。
> names(sheets)
[1] "Sheet_1" "Sheet2" "Sheet_3" "Sheet4" "sheet_4"
可以使用
获取所需的工作表sheet = sheets[grep("_",names(sheets))]
您可以使用
进行检查> names(sheet)
[1] "Sheet_1" "Sheet_3" "sheet_4"
所以你的最终代码将如下所示
filelist <- "sheeetLoadTrial1.xlsx" # single xlsx files
library(xlsx)
allxlsx.sheets <- list() # create a list to populate with xlsx sheet data
for (file in filelist) {
wb <- loadWorkbook(file)
sheets <- getSheets(wb)
sheet = sheets[grep("_",names(sheets))]
for(i in c(1:length(sheet))){
res <- readColumns(sheet[[i]], 1, 2,1,8,header = F)
allxlsx.sheets[[i]] = res
}
names(allxlsx.sheets) <- names(sheet)
}
在此之后,您的最终所需列表将是
> allxlsx.sheets
$Sheet_1
X1 X2
1 1 2
2 2 3
3 2 4
4 2 5
5 2 6
6 2 7
7 2 8
8 2 9
$Sheet_3
X1 X2
1 1 2
2 2 3
3 2 4
4 2 5
5 2 6
6 2 7
7 2 8
8 2 9
$sheet_4
X1 X2
1 1 2
2 2 3
3 2 4
4 2 5
5 2 6
6 2 7
7 2 8
8 2 9
对于多个文件,您只需将allxlsx.sheets
附加到allxlsx.files
列表即可。