Estoy intentando anular save()
en R para que cree los directorios faltantes antes de guardar un objeto. Tengo problemas para pasar un objeto de una función a otra utilizando el método de puntos suspensivos.¿Cómo pasar el objeto en funciones anidadas?
Mi ejemplo:
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)
El código anterior produce este error:
Error in base::save(..., file = file.path(target.dir, basename(file))) : object ‘obj1’ not found
que se dan cuenta de que el problema es que el objeto 'obj1' no existe dentro de mi reserva del personalizado () función, pero todavía no he descubierto cómo pasarlo de fun1 a base :: guardar.
que he intentado:
base::save(parent.frame()$...,file=file.path(target.dir,basename(file)))
y:
base::save(list=list(...),file=file.path(target.dir,basename(file)))
sin éxito.
¿Alguna sugerencia?
base.name corregido para basename en el código anterior. Gracias Matthew. –