读入文件,然后在R中写出一个类似名称的文件

时间:2011-02-18 13:26:08

标签: r

在R中,我想读取文件中的数据,然后做一堆东西,然后将数据写入另一个文件。我能做到。但我想让两个文件自动具有相似的名称。

e.g。如果我创建一个文件params1.R我可以用

读取它
source("c:\\personal\\consults\\ElwinWu\\params1.R")

然后做很多事情

然后用write.table和类似于上面的文件名写出一个结果表,除了输出1而不是params1。

但是我将使用许多不同的params文件来做这件事,我可以预见到不会更改输出文件以匹配params文件的粗心错误。有没有办法实现自动化?

也就是说,设置输出的数字以匹配params的数字?

感谢

彼得

2 个答案:

答案 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"

EDIT2:

然后是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)

如果您不需要保留初始目录,则可以省略最后一行。