2012-08-14 68 views
0

是否可以将文档保存在for循环中,以便第i次运行将保存称为i.txt的文档?我试过很明显的:依赖于“i”的for循环中的文件命名

for (i in 1:10) { 
... 
write.table(temp,file="i.txt",sep="\t", col.names=NA) 
} 

但这只是保存一个名为i.txt的文件。任何方式轻松做到这一点?谢谢。

回答

5

当您编写file="i.txt"时,您正在创建一个固定的字符串,即"i.txt"

您需要添加一些采用当前值i并在字符串中使用它的代码。一种选择是使用paste

paste(i, ".txt", sep="") 

还是使用新的(在读2.15.0)快捷功能paste0它默认使用sep=""

因此,尝试:

for (i in 1:10) { 
... 
write.table(temp,file=paste0(i, ".txt"),sep="\t", col.names=NA) 
} 
+0

谢谢!这是完美的。 – 2012-08-14 08:11:17

3

如果您想要更多的格式化选项,然后看看sprintf()

i <- c(1, 2, 10, 99, 100) 
paste("file", i, ".txt", sep = "") 
[1] "file1.txt" "file2.txt" "file10.txt" "file99.txt" "file100.txt" 
sprintf("file%i.txt", i) 
[1] "file1.txt" "file2.txt" "file10.txt" "file99.txt" "file100.txt" 
sprintf("file%02i.txt", i) 
[1] "file01.txt" "file02.txt" "file10.txt" "file99.txt" "file100.txt" 
sprintf("file%03i.txt", i) 
[1] "file001.txt" "file002.txt" "file010.txt" "file099.txt" "file100.txt"