在将多个CSV读入R时,如何将文件名转换为变量
我有一堆csv文件,它们遵循命名方案:est2009US.csv 我将它们读入R,如下所示:在将多个CSV读入R时,如何将文件名转换为变量,r,csv,import,R,Csv,Import,我有一堆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)) myFil
myFiles <- list.files(path="~/Downloads/gtrends/", pattern = "^est[[:digit:]][[:digit:]][[:digit:]][[:digit:]]US*\\.csv$")
myDB <- do.call("rbind", lapply(myFiles, read.csv, header = TRUE))
myFiles您可以首先从lappy
创建对象
Lapply <- lapply(myFiles, read.csv, header=TRUE))
names(Lapply) <- myFiles
for(i in myFiles)
Lapply[[i]]$Source = i
do.call(rbind, Lapply)
lappyNrows您可以通过使用一个匿名函数来避免两次循环,该函数将文件名作为列分配给每个data.frame
,与您用于读取CSV的lappy
相同
myDB <- do.call("rbind", lapply(myFiles, function(x) {
dat <- read.csv(x, header=TRUE)
dat$fileName <- tools::file_path_sans_ext(basename(x))
dat
}))
myDBplyr
使这非常容易:
library(plyr)
paths <- dir(pattern = "\\.csv$")
names(paths) <- basename(paths)
all <- ldply(paths, read.csv)
库(plyr)
在这里使用Lapply不是令人困惑吗?
library(plyr)
paths <- dir(pattern = "\\.csv$")
names(paths) <- basename(paths)
all <- ldply(paths, read.csv)