使用 for 循环从 R 写入 tables,其中 table 名称包含循环的索引

Write tables from R using for loop, where table names contain the index of the loop

我的一个文件夹里有很多.csv文件,用下面的命令读取:

for(i in 1:length(files)) {
assign(paste("tbl",i,sep=""),fread(file=files[i],skip=1,dec=",",sep="\t")) }

所以我将每个 .csv 文件读入不同的 table,名称为 tbl1、tbl2、tbl3... 我想用下面的 for 循环将这些 table 写入一个文件中:

write.table(tbl1,file="data.csv", append=F, sep="\t", dec=",",col.names=T)

for (i in 2:length(files)) {
     val <- paste0("tbl",i)
     write.table(val, file="data.csv", append=T, sep="\t", dec=",", col.names=F)
}

但只将 "tbl2"、"tbl3"... 粘贴到 data.csv 文件中,而不是 tables 中的数据。

paste0 returns 字符作为输出,因此它正在打印 tbl2,tbl3,.. 您需要将其转换为对象,这可以使用 get 完成。如果你想使用相同格式的代码:

write.table(tbl1,file="data.csv", append=F, sep="\t", dec=",",col.names=T)

for (i in 2:length(files)) {
     val <- get(paste0("tbl",i))
     write.table(val, file="data.csv", append=T, sep="\t", dec=",", col.names=F)
}