【发布时间】:2021-03-01 18:48:49
【问题描述】:
我正在尝试将多个 xlsx 文件批量加载到单个数据帧中。到目前为止,我的这段代码效果很好。
file.list <- list.files(path = "base-files/", pattern='*.xlsx', full.names = TRUE)
test1 <- sapply(file.list, read_xlsx, simplify=FALSE) %>% bind_rows(.id = "id")
我的问题与每个 xlsx 文件的张数有关。我特别希望从每个文件中仅加载表#2。 有什么办法可以在 sapply 函数中添加一个 sheet 标志?
编辑: 运行您推荐的代码后,我得到了一些错误。我想我需要安装 perl?
file.list <- list.files(path = "base-files/", pattern='*.xlsx', full.names = TRUE)
bind_rows(.id = "id")
test1 = lapply(file.list, function(x) {
sheet_no <- if(sheetCount(x) == 1) 1 else 2
read_xlsx(x, sheet = sheet_no)
}) %>% bind_rows(.id = 'id')
Error in findPerl(verbose = verbose) :
perl executable not found. Use perl= argument to specify the correct path.
编辑 刚刚为windows安装了perl https://www.activestate.com/products/perl/downloads/
【问题讨论】: