使用 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)
}
我的一个文件夹里有很多.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)
}