如何将多个同名文件从不同的文件夹导入到R中?

zz2j4svz  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(67)

我看到了一些帖子,但没有一个符合我的要求。
基本上,假设我有一个像C:\User\Files\这样的路径,在Files中我有三个文件夹Data1Data2Data3。在每个Data文件夹中,我有两个.csv文件,它们被命名为相同的file1.csvfile2.csv。我如何在循环中分别从每个文件夹导入这两个文件?我使用了list.files,但它将所有的file1.csv合并到一个文件中,将file2.csv合并到另一个文件中。
我现在尝试的是:

files1 <- list.files(path = "C:\\User\\Files\\",
                    pattern = "file1.csv", 
                    recursive = TRUE, full.names = TRUE)
files2 <- list.files(path = "C:\\User\Files\\",
                    pattern = "file2.csv", 
                    recursive = TRUE, full.names = TRUE)

字符串
但是这将所有的file1.csv组合在一起成为一个嵌套框架,files2.csv也是如此。

xmd2e60i

xmd2e60i1#

尝试这种方法

path = # set path accordingly, ~ "C:\User\Files\" 
file_paths = unlist(lapply(
  file.path(path, paste0("Data", 1L:3L)), # Data1, Data2, Data3
  \(x) { list.files(path = x, pattern = "\\.csv$", full.names = TRUE) }))
list2env(lapply(setNames(file_paths, basename(file_paths)), read.csv), 
         envir = .GlobalEnv)
# rm(path, file_paths)

字符串
它假定所有文件都有不同的名称。
免责声明:我正在使用mac0S,并怀疑file.path()是0S不可知的。

vsikbqxv

vsikbqxv2#

我是这样做的:

files1 <- list.files(path = "C:\\User\\Files\\",
                    pattern = "file1.csv", 
                    recursive = TRUE, full.names = TRUE)
files2 <- list.files(path = "C:\\User\Files\\",
                    pattern = "file2.csv", 
                    recursive = TRUE, full.names = TRUE)

myfiles1 = lapply(files1, read.csv)
myfiles2 = lapply(files2, read.csv)

i = 1:length(myfiles1)

fn <- function(i) {
  
  dfFiles1 = myfiles1[[i]]
  
  dfFiles2 = myfiles2[[i]]
}

字符串

相关问题