从多个文件夹中读取* .csv作为列表

时间:2014-05-25 09:08:38

标签: r csv

我在多个文件夹../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/t1C:/Example/t2等。如何使用一个主目录读取所有数据(作为data.frames列表),如:C:/Example/*

1 个答案:

答案 0 :(得分:4)

list.filesrecursive=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"