将多个csvs读入R时,如何将文件名转换为变量

use*_*742 2 csv import r

我有一堆遵循命名方案的csv文件:est2009US.csv.

我正在将它们读入R如下:

myFiles <- list.files(path="~/Downloads/gtrends/", pattern = "^est[[:digit:]][[:digit:]][[:digit:]][[:digit:]]US*\\.csv$")

myDB <- do.call("rbind", lapply(myFiles, read.csv, header = TRUE))
Run Code Online (Sandbox Code Playgroud)

我想找到一种方法来创建一个新变量,对于每个记录,该变量都填充了记录来自的文件的名称.

GSe*_*See 6

你能避免通过使用指定的文件名以每列匿名函数循环两次data.frame在同一个lapply您用来阅读的CSV.

myDB <- do.call("rbind", lapply(myFiles, function(x) {
  dat <- read.csv(x, header=TRUE)
  dat$fileName <- tools::file_path_sans_ext(basename(x))
  dat
}))
Run Code Online (Sandbox Code Playgroud)

我删除了目录和文件扩展名. basename()返回文件名,不包括目录,并tools::file_path_sans_ext()删除文件扩展名.