At the end of an analysis I'd like to save some of the R environment objects. However, I reuse this script and sometimes some of the objects don't exist. I don't want to have to edit the save statement each time, so I'd like the script to accommodate when an object doesn't exist. I'm struggling to get this to work with exist
though.
save(if(exists("object1")) {object},
if(exists("object2")) {object2},
file = "./my_saved_environment/saved_objects.RData")
CodePudding user response:
Use save(file=...)
and a character vector, intersect
ing with the variables you want. For example:
ls()
# [1] "airquality" "aqm" "dat" "mydata"
intersect(ls(), c("mydata", "quux"))
# [1] "mydata" # quux does not exist
save(list = intersect(ls(), c("mydata", "quux")), file = "quux.rda")
And if we look at the .rda
file, this is what is saved:
e <- new.env(parent = emptyenv())
load("quux.rda", envir = e)
ls(envir = e)
# [1] "mydata"
You can also form the list of objects to save programmatically, perhaps using grep("^mydata.*", ls(), value=TRUE)
or similar.