我在多个目录中有许多csv文件,我想读入R tribble或data.table.我使用"list.files()"并将递归参数设置为TRUE来创建文件名和路径列表,然后使用"lapply()"读入多个csv文件,然后"bind_rows()"将它们全部粘在一起一起:
filenames <- list.files(path, full.names = TRUE, pattern = fileptrn, recursive = TRUE)
tbl <- lapply(filenames, read_csv) %>%
bind_rows()
Run Code Online (Sandbox Code Playgroud)
这种方法很好.但是,我需要从每个文件名中提取一个子字符串,并将其作为列添加到最终表中.我可以使用"str_extract()"得到我需要的子字符串,如下所示:
sites <- str_extract(filenames, "[A-Z]{2}-[A-Za-z0-9]{3}")
Run Code Online (Sandbox Code Playgroud)
然而,我被困在如何将提取的子字符串添加为列,因为lapply()通过read_csv()为每个文件运行.
我有这段代码可以读取目录中的所有 CSV 文件。
nm <- list.files()
df <- do.call(rbind, lapply(nm, function(x) read_delim(x,';',col_names = T)))
Run Code Online (Sandbox Code Playgroud)
我想以将文件名附加到数据的方式修改它。结果将是一个包含所有 CSV 文件的单个数据框,并且在数据框中,有一列指定数据来自哪个文件。怎么做?