Как передать объект во вложенные функции?

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

Мой пример:

save <- function(...,file){ #Overridden save()
  target.dir <- dirname(file) #Extract the target directory
  if(!file.exists(target.dir)) {
      #Create the target directory if it doesn't exist.
      dir.create(target.dir,showWarnings=T,recursive=T)
  }
  base::save(...,file=file.path(target.dir,basename(file)))
}

fun1 <- function(obj) {
  obj1 <- obj + 1
  save(obj1,file="~/test/obj.RData")
}

fun1(obj = 1)

Приведенный выше код приводит к этой ошибке:

Ошибка в base::save(..., file = file.path(target.dir, basename(file))) :
объект «obj1» не найден

Я понимаю, что проблема в том, что объект 'obj1' не существует внутри моей пользовательской функции save(), но я еще не понял, как передать его из fun1 в base::save.

Я пытался:

base::save(parent.frame()$...,file=file.path(target.dir,basename(file)))

и:

base::save(list=list(...),file=file.path(target.dir,basename(file)))

безуспешно.

Есть предложения?

6
задан D. Woods 8 November 2012 в 20:06
поделиться