【发布时间】:2018-04-26 15:22:47
【问题描述】:
我正在遍历多个文件,其中每个文件创建一个表。我想将每个表保存到一个文件中,以便将所有表放在一起。这个想法是,在每个文件运行后,最终输出将附加到表中的前一个最终输出。我当前的代码循环遍历每个文件,但仅从文件夹中的最后一个文件中获取数据并重复附加到相同的输出。这是我的代码:
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)
【问题讨论】:
-
这可能已被回答并被重复。看看这个stackoverflow.com/questions/24819433/…
-
我知道如何读取每个单独的文件,我希望附加读取文件后得到的输出。我相信这些解决方案将原始文件附加在一起,这并不是我想要的。