假设我们有一个包含多个data.csv文件的文件夹,每个文件包含相同数量的变量,但每个变量来自不同的时间。
R中是否有一种方法可以同时导入它们,而不必分别导入它们?
我的问题是我有大约2000个数据文件要导入,而仅通过使用以下代码就可以分别导入它们:
read.delim(file="filename", header=TRUE, sep="\t")
不是很有效。
最佳答案
类似于以下内容应导致每个数据帧在单个列表中作为单独的元素:
temp = list.files(pattern="*.csv")
myfiles = lapply(temp, read.delim)
假设您在单个目录(当前工作目录)中拥有这些CSV,并且所有这些CSV都具有小写的扩展名
.csv
。如果然后要将这些数据帧组合为一个数据帧,请使用
do.call(rbind,...)
,dplyr::bind_rows()
或data.table::rbindlist()
之类的内容查看其他答案中的解决方案。如果您确实希望将每个数据帧都放在一个单独的对象中,尽管通常不建议这样做,则可以使用
assign
进行以下操作:temp = list.files(pattern="*.csv")
for (i in 1:length(temp)) assign(temp[i], read.csv(temp[i]))
或者,不使用
assign
并演示(1)如何清理文件名和(2)显示如何使用list2env
,可以尝试以下操作:temp = list.files(pattern="*.csv")
list2env(
lapply(setNames(temp, make.names(gsub("*.csv$", "", temp))),
read.csv), envir = .GlobalEnv)
但同样,通常最好将它们放在一个列表中。
关于r - 如何一次导入多个.csv文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47032988/