R сохранить функцию, используя имена местозаполнителей - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть несколько сценариев, которые нужно запускать повторно. В каждом из них выполняется последовательность шагов, в результате чего создаются три объекта данных, которые необходимо сохранить с уникальными именами для каждого выполнения сценария. В скрипте я хочу вызвать функцию save (), в которой есть имена местозаполнителей для имени файла объекта / кадра данных, но я хочу указать фактические значения для этих заглушек вне сценария.

# inside "Script.R":
# series of steps to generate three dataframes (create fake DFs here)
path0 <- "C:/Data/"
DF1 <- data.frame(a=seq(1,16,by=2), b=LETTERS[1:8], c=sample(10:20,8,replace=TRUE))
DF2 <- data.frame(a=seq(1,16,by=2), b=LETTERS[1:8], c=sample(10:20,8,replace=TRUE))
DF3 <- data.frame(a=seq(1,16,by=2), b=LETTERS[1:8], c=sample(10:20,8,replace=TRUE))
save(DF1 , file=paste0(path0,"DF1", ".rda")) 
save(DF2 , file=paste0(path0,"DF2", ".rda")) 
save(DF3 , file=paste0(path0,"DF3", ".rda")) 

Затем я хотел бы вызвать сценарий из источника, но указать нужный объект и имена файлов для замены имен заполнителей, сгенерированных в сценарии, например:

DF1 <- RealDF1objectname 
DF2 <- RealDF2objectname 
DF3 <- RealDF13bjectname 
source("Script1.R")

Я думаю, что назначение () функция может быть полезна здесь, но я не уверен, как использовать ее в этом контексте.

1 Ответ

0 голосов
/ 11 апреля 2020

Вы можете создать function, давайте назовем его script и передадим ему нужный объект и имена файлов:

script<- function (n1,n2,n3) {
#
path0 <-  path0 <- "C:/Data/"
DF1 <- data.frame(a=seq(1,16,by=2), b=LETTERS[1:8], c=sample(10:20,8,replace=TRUE))
DF2 <- data.frame(a=seq(1,16,by=2), b=LETTERS[1:8], c=sample(10:20,8,replace=TRUE))
DF3 <- data.frame(a=seq(1,16,by=2), b=LETTERS[1:8], c=sample(10:20,8,replace=TRUE))
#
save(DF1 , file=paste0(path0, n1, ".rda")) 
save(DF2 , file=paste0(path0, n2, ".rda")) 
save(DF3 , file=paste0(path0, n3, ".rda")) 
}

Использование

source('~/script.R')
script("temp1","temp2","temp3")

Выход

> list.files(path0)
[1] "script.R"  "temp1.rda" "temp2.rda" "temp3.rda"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...