While testing a simulation in R using randomly generated input data, I have found and fixed a few bugs and would now like to re-run the simulation with the same data, but with all intermediate variables removed to ensure it's a clean test.
Is there a way to remove several dozen manually selected variables from the workspace without having to:
a) clobber the entire workspace, e.g.
remove(name1, name2, ...)
ls() # inspect definitions
delme <- c(3,5,7:9,11,13) # names selected for removal
remove(ls()[delme]) # DESIRED SOLUTION -- doesn't quite work this way
Assad, while I think the actual answer to the question is in the comments, let me suggest this pattern as a broader solution:
rm(list= Filter( Negate(is.na), # filter entries corresponding to objects that don't meet function criteria sapply( ls(pattern="^a"), # only objects that start with "a" function(x) if(is.matrix(get(x))) x else NA # return names of matrix objects ) ) )
In this case, I'm removing all matrix object that start with "a". By modifying the
pattern argument and the function used by
sapply here, you can get pretty fine control over what you delete, without having to specify many names.
If you are concerned that this could delete something you don't want to delete, you can store the result of the
Filter(... operation in a variable, review the contents, and then execute the