假设我们有一个包含多个data.csv文件的文件夹,每个文件包含相同数量的变量,但每个变量包含不同的时间.R中有没有办法同时导入它们而不必单独导入它们?
我的问题是我有大约2000个数据文件要导入,只需使用代码就可以单独导入它们:
read.delim(file="filename", header=TRUE, sep="\t")
Run Code Online (Sandbox Code Playgroud)
不是很有效率.
我有大量的csv文件,我想读入R.所有csvs中的列标题是相同的.起初我以为我需要根据文件名列表创建一个循环,但在搜索之后我发现了一种更快的方法.这将正确读入并组合所有csvs(据我所知).
filenames <- list.files(path = ".", pattern = NULL, all.files = FALSE, full.names = FALSE, recursive = FALSE, ignore.case = FALSE)
library(plyr)
import.list <- llply(filenames, read.csv)
combined <- do.call("rbind", import.list)
Run Code Online (Sandbox Code Playgroud)
唯一的问题是我想知道特定行数据来自哪个csv.我想要一个标有"source"的列,其中包含特定行来自的csv的名称.所以例如,如果csv被称为Chicago_IL.csv,当数据进入R时,行看起来像这样:
> City State Market etc Source
> Burbank IL Western etc Chicago_IL
Run Code Online (Sandbox Code Playgroud) 我在多个目录中有许多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()为每个文件运行.