【发布时间】:2020-05-09 13:27:00
【问题描述】:
有了这个代码就可以从一个文件路径读取多个csv
setwd("C:/Users/Nathalie/mycsvs")
files <- list.files(path = "C:/Users/Nathalie/mycsvs",pattern = ".csv")
temp <- lapply(files, fread, sep=",")
如何向数据框中添加一列,该列将具有每行来自的文件名?
【问题讨论】:
标签: r
有了这个代码就可以从一个文件路径读取多个csv
setwd("C:/Users/Nathalie/mycsvs")
files <- list.files(path = "C:/Users/Nathalie/mycsvs",pattern = ".csv")
temp <- lapply(files, fread, sep=",")
如何向数据框中添加一列,该列将具有每行来自的文件名?
【问题讨论】:
标签: r
我们可以使用Map 并使用cbind 创建一个新列来显示每个文件的文件名。
Map(cbind, lapply(files, data.table::fread, sep=","), filename = files)
我们也可以使用 purrr 包中的函数来做同样的事情。
library(purrr)
map2(map(files, data.table::fread, sep=","), files, cbind)
要使用lapply,我们可以遍历文件名的索引,并使用transform 添加带有文件名的新列。
lapply(seq_along(files), function(x) transform(read.csv(files[x]), file = files[x]))
【讨论】: