在R中,我想从一个文件中读取数据,然后执行一系列操作,然后将数据写到另一个文件中。我能做到。但我希望这两个文件自动具有相似的名称。
例如,如果我创建了一个文件params1.R,我可以用以下命令读取它
source("c:\\personal\\consults\\ElwinWu\\params1.R")
然后做很多事情
然后写出一个带有write.table和类似于上面的文件名的结果表,除了用output1代替params1。
但我将对许多不同的params文件执行此操作,并且我可以预见会犯一些粗心的错误,即没有更改输出文件以匹配params文件。有没有办法让这一切自动化呢?
也就是说,将输出的数字设置为与params的数字匹配?
谢谢
彼得
发布于 2011-02-18 16:04:48
如果这个想法只是为了确保所有的输出都与输入放在同一个目录中,那么尝试这样做:
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)
如果不需要保留初始目录,可以省略最后一行。
发布于 2011-02-18 13:32:58
如果您的源文件总是包含您想要更改为“输出”的"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"
Edit2:
20个param文件的循环是:
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)))
}
https://stackoverflow.com/questions/5041827
复制相似问题