导入具有几乎相似的路径和名称的文件

时间:2018-07-13 12:39:24

标签: r import

我有很多要导入到R中的txt文件。这些文件被一个接一个地导入,我执行所需的操作,然后导入下一个文件。

所有这些文件都位于数据库系统中,其中所有文件夹的名称几乎相同,例如

database\type4\system50  

database\type6\system50 

database\type4\system30 

database\type4\system50 

类似地,文件的名称也几乎相同,例如指向文件所在的文件夹。

type4.system50.txt

type6.system50.txt

type4.system30.txt

type4.system50.txt

我听说应该有一种简单的方法来逐个导入许多文件,而不是简单地使用多个setwd和read.csv2命令。据我了解,这可以通过SAS中的宏导入功能来实现,在该功能中,您可以指定一条总体路径,然后每次要导入文件时,都可以指定该文件名/文件夹名的具体含义。

R中是否有类似的功能?我试着看 Importing Data in R like SAS macro

,但是此问题并未真正向我展示如何指定文件夹名称/文件名。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以为每个文件指定绝对路径,而不是连续使用setwd,将所有路径保存到向量中,遍历路径向量并将文件加载到列表中

library(data.table)

file_dir <- "path/to/files/"

file_vec <- list.files(path = file_dir, pattern = "*.txt")

file_list <- list()

for (n in 1:length(file_list)){
  file_list[[n]] <- fread(input = paste0(file_dir, file_vec[n]))
}

答案 1 :(得分:0)

如果要指定文件夹名称/文件名,请尝试

    databasepath="path/to/database"

    ## list all files
    list.files(getwd(),recursive = T,full.names = T,include.dirs = T) -> tmp

    ## filter files you want to read
    readmyfile <- function(foldername,filename){
      tmp[which(grepl(foldername,tmp) & grepl(filename,tmp))]
    }
    files_to_read <- readmyfile("type4", "system50")

    some_files <- lapply(files_to_read, read.csv2)

    ## Or you can read all of them (if memory is large enough to hold them)

    all_files <- lapply(tmp,read.csv2)