R导入一些以相同字符串开头的xlsx文件,而忽略同一文件夹中的其他文件

问题描述

我想将一些xlsx文件导入rstudio。 这些文件都在同一个文件夹中,但是其中还有一些我不感兴趣的其他xlsx文件

  • Alles_2017.xlsx
  • Alles_2018.xlsx
  • Alles_2019.xlsx
  • Alles_2020_incl_Oct.xlsx
  • Blabla.xlsx
  • IdontkNow.xlsx

我想导入所有四个“ Alles _....”文件,以建立包含所有这些数据的单个数据框(例如,称为“全部”)。而且我希望该函数忽略所有不以“ Alles_”开头的其他文件

我可以使用哪些功能

提前谢谢!

解决方法

list.files将创建一个文件名向量,pattern参数就像一个过滤器,在此过滤器将仅匹配其中包含Alles的文件。 map_dfr是执行for循环并将表绑定在一起的一种理想方法。如果所有alles文件表的结构都不相同,则可能需要先尝试map本身。这将返回一个列表,以便您可以检查它们。 read_xlsx将按照您的想法进行。您可能需要弄清楚所需文件中的哪张纸,默认值为工作簿中的第一张纸。

library(purrr)
library(magrittr)
library(readxl)
list.files(path = "directory they live",pattern = "Alles_",full.names = TRUE) %>% 
  map_dfr(.,read_xlsx)
,

首先,我将使用setwd()设置工作目录,然后:

dir()[grepl('Alles',ignore.case = T,dir())] -> files    
do.call('rbind',lapply(files,function(file) openxlsx::read.xlsx(file)))

如果要第二张纸:

do.call('rbind',function(file) openxlsx::read.xlsx(file,sheet = 2)))