可能的重复:
将多个 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)
}
csv.read 似乎工作正常,但我无法按照我想要的方式创建数据框对象。我只是想要某种方式来命名在中读取的数据帧fxpair.yyyy.mm基于文件名的格式。
我错过了一些明显的东西吗?感谢您的任何帮助!!
只是为了说明我的评论:
for (i in filenames){
name <- gsub("-",".",i)
name <- gsub(".csv","",name)
i <- paste(".\\",i,sep="")
assign(name,read.csv(i, header=FALSE)
}
或者,将所有数据帧保存在列表中:
All <- lapply(filenames,function(i){
i <- paste(".\\",i,sep="")
read.csv(i, header=FALSE)
})
filenames <- gsub("-",".",filenames)
names(All) <- gsub(".csv","",filenames)
我会选择第二种解决方案,因为我喜欢使用列表。之后清理工作空间就不那么麻烦了。你也摆脱了name
and i
全球环境混乱。如果您不小心,这些可能会在代码中导致一些有趣的错误。也可以看看R 的 apply 系列不仅仅是语法糖吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)