将多个文件导入 R 中的单个合并数据框

Importing multiple files into a single, merged data frame in R

我有 8 个 CSV 文件都在同一目录中,需要将它们导入到 R 中的单个数据框中。它们都遵循相同的命名约定,"dataUK_1.csv"、"dataUK_2.csv" 等,并且在列方面具有完全相同的结构。

我已经成功创建了一个包含所有文件名(包括完整目录)的向量:

files = list.files("/Users/iarwain/Data", pattern=".csv", full.names=T)

我只是不确定如何将这些名称传递给 read.csv 命令,以便它循环 8 次,导入每个文件并将其内容作为新行添加到单个数据框中,这样最终结果是一个数据框,其中包含来自 8 个 CSV 的所有数据行。

谢谢!

您不需要循环。你想要lapply

file_list <- list.files("/Users/iarwain/Data", pattern=".csv", full.names=T)


combined_files <- do.call("rbind", lapply(file_list, read.csv))

翻译:对列表 file_list 中的每个项目应用函数 read.csv。输出是一个列表。在所有输出上调用函数 rbind,并将其分配给 combined_files

在 tidyverse 中你可以只添加一个管道和一个 map_df()

file_list <- list.files("/Users/iarwain/Data", pattern=".csv", full.names=T) %>%
    map_df(read_csv(.))

具体来说,正如 Hadley 所描述的 here(大约一半):

map_df(x, f) is effectively the same as do.call("rbind", lapply(x, f)) but under the hood is much more efficient.

感谢 Jake Kaupp 向我介绍 map_df()