我试图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)
上面的代码导致这个错误:
Error in base::save(..., file = file.path(target.dir, basename(file))) : object ‘obj1’ not found
我意识到问题在于我的自定义 save() 函数中不存在对象“obj1”,但我还没有弄清楚如何将它从 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)))
没有成功。
有什么建议么?