我在多个文件夹../t1/*.csv
,../t2/*.csv
,../t3/*.csv
等中有数千个* csv文件。
我可以从多个文件夹上传文件,如下所示:
filenames <- list.files(c("C:/Example/t1","C:/Example/t2"), pattern="*.csv", full.names=TRUE)
list.df <- lapply(filenames, read.csv)
但是我必须输入所有目录C:/Example/t1
,C:/Example/t2
等。如何使用一个主目录读取所有数据(作为data.frames列表),如:C:/Example/*
?
答案 0 :(得分:4)
将list.files
与recursive=TRUE
一起使用将搜索第一个参数下的所有文件夹以匹配文件:
> list.files("./",recursive=TRUE)
[1] "a/a1.csv" "a/a2.csv" "a/notme.txt" "b/b1.csv" "d/e/e1.csv"
如果我只想要CSV,那就是我当前目录下的所有文件:
> list.files("./",recursive=TRUE,pattern="*.csv")
[1] "a/a1.csv" "a/a2.csv" "b/b1.csv" "d/e/e1.csv"
请注意它在第二级d/e/
文件夹中的外观?
如果您只想转到一个特定的深度,请尝试Sys.glob
- 这些模式与文件夹和文件匹配,这些示例在当前目录中起作用:
仅限第一级:
> Sys.glob("*/*.csv")
[1] "a/a1.csv" "a/a2.csv" "b/b1.csv"
只有第二级:
> Sys.glob("*/*/*.csv")
[1] "d/e/e1.csv"