Sto cercando di ignorare save()
in R in modo da creare eventuali directory mancanti prima di salvare un oggetto. Ho problemi a passare un oggetto attraverso una funzione a un'altra utilizzando il metodo ellissi.Come passare l'oggetto nelle funzioni annidate?
Il mio esempio:
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)
Il codice sopra i risultati di questo errore:
Error in base::save(..., file = file.path(target.dir, basename(file))) : object ‘obj1’ not found
mi rendo conto che il problema è che l'oggetto 'obj1' non esiste dentro la mia personalizzato save (), ma non ho ancora capito come passarlo da fun1 a base :: save.
ho provato:
base::save(parent.frame()$...,file=file.path(target.dir,basename(file)))
e:
base::save(list=list(...),file=file.path(target.dir,basename(file)))
senza successo.
Qualche suggerimento?
base.name Corretto al nome base nel codice qui sopra. Grazie Matteo. –