Чтение файла, затем запись файла с похожим именем в R - PullRequest
2 голосов
/ 18 февраля 2011

В R я хотел бы прочитать данные из файла, затем сделать кучу вещей, а затем записать данные в другой файл.Я могу это сделать.Но я хотел бы, чтобы два файла имели одинаковые имена автоматически.

например, если я создаю файл params1.RI, можно прочитать его с помощью

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

, а затем сделать много вещей

затем запишите полученную таблицу с write.table и именем файла, похожим на приведенное выше, за исключением с output1 вместо params1.

Но я буду делать это со многими различными файлами params, и яможет предвидеть, что будут делать неосторожные ошибки, не меняя выходной файл в соответствии с файлом params.Есть ли способ автоматизировать это?

То есть, установить номер для вывода, чтобы соответствовать числу для параметров?

спасибо

Питер

Ответы [ 2 ]

3 голосов
/ 18 февраля 2011

Если ваш исходный файл всегда содержит «params», которые вы хотите изменить на «output», вы можете легко сделать это с помощью 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"

Edit:

Или получить .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 голос
/ 18 февраля 2011

Если идея состоит в том, чтобы убедиться, что все выходные данные находятся в том же каталоге, что и входные, то попробуйте следующее:

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)

Если вам не нужно сохранять исходный каталог, вы можете пропустить последнюю строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...