在 R 中从网络目录上传、读取和命名多个文件

R_S*_*ent 1 directory for-loop file-upload r file

.xlsx我正在尝试从具有以下路径的网络目录中读取多个文件:

\\181.01.2\Global_Office_Net\Accounting 该文件夹内还有其他几个文件夹(大约 15 个),每个文件夹中都有几个文件,但每个文件夹都有一个名称.xlsx以“overall_counts_123”开头的文件,“123”可以是任何数字,但名称除外文件始终以“overall_counts”开头,我的目标是将所有文件上传到 Rstudio 并使用标签“file1”、“file2”等重命名它们,如果我不清楚,请让我举个例子:

如果目录中有 3 个文件夹,并且每个文件夹都有以“overall_counts”开头的“n”个文件,我只想得到如下内容:

\\181.01.2\Global_Office_Net\Accounting\folder1\overall_counts1.xlsx

\\181.01.2\Global_Office_Net\Accounting\folder2\overall_counts1.xlsx

\\181.01.2\Global_Office_Net\Accounting\folder2\overall_counts15.xlsx

\\181.01.2\Global_Office_Net\Accounting\folder3\overall_counts1008.xlsx
Run Code Online (Sandbox Code Playgroud)

我正在使用这段代码:

file_paths<-fs::dir_ls("\\181.01.2\Global_Office_Net\Accounting")

FILES<-file_paths %>% 
map(function(path){
  read_xlsx(path)})
Run Code Online (Sandbox Code Playgroud)

但是,不是在每个文件夹中查找以“overall_counts”开头的文件,而是上传所有内容并以某种方式列出它们......当我真正寻找的是将每个所需的文件上传为 file2、file2 等时在单独的数据框中,如果您能参考一篇关于如何根据文件名标准上传文件并单独上传的文章,我将非常感激,非常感谢你们,我真的欠你们这个

mar*_*rl1 5

你可以试试这个:

获取匹配文件的列表,查看所有子文件夹(递归= TRUE)

filenames <- list.files(path = "\\\\181.01.2\\Global_Office_Net\\Accounting\\", 
                        pattern = "overall_counts[0-9]+\\.xlsx", 
                        recursive = TRUE)
Run Code Online (Sandbox Code Playgroud)

标记为“file1”、“file2”等。

fns <- setNames(filenames, paste0("file", 1:length(filenames)))  
Run Code Online (Sandbox Code Playgroud)

现在将这些文件读入 R:

library(readxl)
dfs <- lapply(fns, read_xlsx)
Run Code Online (Sandbox Code Playgroud)

这会产生一个数据帧(tibbles)列表,如下所示:dfs$file1dfs$file2等。