我有很多要导入到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
,但是此问题并未真正向我展示如何指定文件夹名称/文件名。
感谢您的帮助。
答案 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)