eponge: Keep Your Environment Clean
en r eponge
eponge
is a small package, which facilitates selective object removal.
It was released on
CRAN at
23th March 2020. Initially, the package was named sponge
, but during
first submission trial I found out, that currently there exists the
SPONGE
package, availbale on BioConductor. Because of that, I decided to rename
my package, changing only one letter. The package was given a new name:
eponge
, which simply means sponge in
French. Let me present,
what the package was created for.
Removing objects by name
Typically, when we want to remove all objects from the global
environment, we can use click the broom icon in RStudio (supposing we
use this IDE - but in most cases, we do). Alternatively, we can obtain
the same results combining rm
with ls
.
# Remove all the objects
rm(list = ls())
# Remove object with 'iris' in its name
rm(list = ls(pattern = "iris"))
eponge
offers a an equivalent shortcut: erase
function. It’s
particularly handy when we want to select some set of objects using
regex pattern.
# Remove all the objects
eponge::erase()
# Remove object with 'iris' in its name
eponge::erase("iris")
Removing objects by type
epnoge
becomes even more useful, when we want to precisely remove a
tiny subset of objects. Normally, we would use a combination of ls
,
get
and rm
functions. If we don’t want to recreate such code from
scratch, eponge
do it for us:
# Erasing by type
eponge::erase_if(is.character)
# We can use a regex pattern to identify the objects we want
eponge::erase_functions("prepare_")
# We can clean whole section in RStudio Envitonment tab
# Remove all the objects named in RStudio as "Data"
eponge::erase_data()
# Remove all the "Values" in RStidio
eponge::erase_values()
Removing masking objects
As we know, homonime objects mask each other. If we want to get rid of
such objects from our environment, the most convenient way to do that is
eponge
’s erase_masking_*
function family. At the moment, it embraces
two functions:
erase_masking
erase_masking_functions
log <- function(x) print(paste0("Logging:", x))
cars <- data.frame(idx = 1:10,
speed = runif(10, 30, 50))
eponge::erase_masking()
eponge
allows you to keep your R environments clean in easy way. Try
it yourself!