在R中,我想读取文件中的数据,然后做一堆东西,然后将数据写入另一个文件。我能做到。但我想让两个文件自动具有相似的名称。
e.g。如果我创建一个文件params1.R我可以用
读取它source("c:\\personal\\consults\\ElwinWu\\params1.R")
然后做很多事情
然后用write.table和类似于上面的文件名写出一个结果表,除了输出1而不是params1。
但是我将使用许多不同的params文件来做这件事,我可以预见到不会更改输出文件以匹配params文件的粗心错误。有没有办法实现自动化?
也就是说,设置输出的数字以匹配params的数字?
感谢
彼得
答案 0 :(得分:3)
如果您的源文件始终包含" params"你想改成"输出"那么你可以通过gsub
:
source(file <- "c:\\personal\\consults\\ElwinWu\\params1.R")
### some stuff
write.table(youroutput, gsub("params","output",file) )
# Will write in "c:\\personal\\consults\\ElwinWu\\output1.R"
或者将.txt作为文件类型:
write.table(youroutput, gsub(".R",".txt",gsub("params","output",file)))
# Will output in c:\\personal\\consults\\ElwinWu\\output1.txt"
然后是20个参数文件的循环:
n <- 20 # number of files
for (i in 1:n)
{
source(file <- paste("c:\\personal\\consults\\ElwinWu\\params",i,".R",sep=""))
### some stuff
write(youroutput, gsub(".R",".txt",gsub("params","output",file)))
}
答案 1 :(得分:1)
如果想法只是为了确保所有输出都与输入位于同一目录中,那么试试这个:
source(file <- "c:\\personal\\consults\\ElwinWu\\params1.R")
old.dir <- setwd(dirname(file))
write.table(...whatever..., file = "output1.dat")
write.table(...whatever..., file = "output2.dat")
setwd(old.dir)
如果您不需要保留初始目录,则可以省略最后一行。