我循环遍历多个文件,其中每个文件都创建一个表。我想将每个表保存到一个文件中,以便将所有表保存在一起。这个想法是在每个文件运行之后,最终输出将附加到表中的前一个最终输出。我当前的代码循环遍历每个文件,但只获取文件夹中最后一个文件的数据,并重复附加到相同的输出。这是我的代码:
filenames <- Sys.glob("*.xlsx")
print(filenames)
final.df<-data.table()
for(i in 1:length(filenames)) {
#... final table named "Stats"
Stats$file <- i #To view which file is listed
df <- data.table(Stats)
final.df <- rbind(final.df, df)
drop(df)
}
当我运行代码时,文件名以这种格式打印26次:
[1] "file1.xlsx" "file2.xlsx"
[1] "file1.xlsx" "file2.xlsx"
[1] "file1.xlsx" "file2.xlsx"
...
我当前的输出以这种格式打印:
X Y Z File
1 10 2 file2
2 6 2 file2
1 9 2 file2
1 10 2 file2
2 6 2 file2
1 9 2 file2
我想要的输出如下所示:
X Y Z File
0 4 1 file1
1 7 1 file1
0 1 1 file1
1 10 2 file2
2 6 2 file2
1 9 2 file2
解
files <- list.files(pattern = "\\.xlsx$")
print(files)
final.df<-list()
for(title in c(paste(files, sep="."))) {
#... (Some data named Stats)
Stats<-data.table(Stats)
final.df[[title]] <- Stats
print(final.df)
}
Final <- rbindlist(final.df)
答案 0 :(得分:0)
如果没有您的数据,我认为这应该有效:
listOut <- list()
for(i in 1:length(filenames)) {
df <- data.table(filenames[i])
listOut[[i]] <- df
}
dfFinal <- rbindlist(listOut)
我们的想法是创建一个数据框并将其附加到每个文件的列表中。然后,您可以将所有列表元素组合在一起。这比尝试附加到现有数据帧要有效得多。