可能重复:将
多个CSV文件读入单独的数据框
我需要从一个文件夹中将许多csv文件读入数据帧.csv文件名的格式为fxpair-yyyy-mm.csv(例如AUDJPY-2009-05.csv).我想读取所有csv文件并创建fxpair.yyyy.mm形式的数据帧
我在循环中创建数据框名称以便从read.csv语句中进行赋值时遇到问题
filenames <- list.files(path=getwd())
numfiles <- length(filenames)
#fx.data.frames to hold names that will be assigned to csv files in csv.read
fx.data.frames <- gsub(pattern="-",x=filenames,replacement=".")
fx.data.frames <- gsub(pattern=".csv",x=fx.data.frames,replacement="")
i <-1
for (i in c(1:numfiles)){
filenames[i] <- paste(".\\",filenames[i],sep="")
fx.data.frames[i] <- read.csv(filenames[i], header=FALSE)
}
Run Code Online (Sandbox Code Playgroud)
csv.read似乎工作正常,但我无法以我想要的方式创建数据框对象.我只是想根据文件名命名以fxpair.yyyy.mm格式读取的数据帧.
我错过了什么obvius?感谢您的任何帮助!!
只是为了说明我的评论:
for (i in filenames){
name <- gsub("-",".",i)
name <- gsub(".csv","",name)
i <- paste(".\\",i,sep="")
assign(name,read.csv(i, header=FALSE)
}
Run Code Online (Sandbox Code Playgroud)
或者,要将所有数据帧保存在列表中:
All <- lapply(filenames,function(i){
i <- paste(".\\",i,sep="")
read.csv(i, header=FALSE)
})
filenames <- gsub("-",".",filenames)
names(All) <- gsub(".csv","",filenames)
Run Code Online (Sandbox Code Playgroud)
我会选择第二个解决方案,因为我喜欢使用列表.之后清理工作区不那么麻烦.您也摆脱了name与i全球环境杂乱.如果您不小心,这些可能会在代码中导致一些有趣的错误.另请参阅R是否适用于家庭而不是语法糖?
这个怎么样 :
for (i in c(1:numfiles)){
filenames[i] <- paste(".\\",filenames[i],sep="")
assign(gsub("[.]csv$","",filenames[i]),read.csv(filenames[i], header=FALSE))
}
Run Code Online (Sandbox Code Playgroud)