我想设计一个功能。假设我有文件file1.csv,file2.csv,file3.csv,...,file100.csv。每次通过指定整数向量id调用函数时,我只想读取其中的一些,例如,id = 1:10,然后我将读取file1.csv,...,file10.csv。
在阅读了那些csv文件之后,我想将它们组合成一个变量。所有csv文件都具有相同的列结构。
我的代码如下:
namelist <- list.files()
for (i in id) {
assign(paste0( "file", i ), read.csv(namelist[i], header=T))
}
正如您所看到的,在我读完所有数据矩阵后,我坚持将它们组合在一起,因为它们都有不同的变量名称。
答案 0 :(得分:6)
您应该将每个文件作为列表的元素读取。然后你可以按如下方式组合它们:
namelist <- list.files()
df <- vector("list", length = length(id))
for (i in id) {
df[[i]] <- read.csv(namelist[i], header = TRUE)
}
df <- do.call("rbind", df)
或者更简洁:
df <- do.call(rbind, lapply(list.files(), read.csv))
答案 1 :(得分:3)
我这样做,没有for循环更像R:
## assuming you have a folder full of .csv's to merge
filenames <- list.files()
all_files <- Reduce(rbind, lapply(filenames, read.csv))
答案 2 :(得分:1)
如果我理解你想做什么,那么这就是你所需要的:
namelist <- list.files()
singlevar = c()
for (i in id) {
singlevar = rbind(singlevar, read.csv(namelist[i], header=T))
}
最后,您希望一个对象包含单个文件中的所有部分信息,rbind
。