The goal of objectable is to make it easy to experiment with object tables using only R code. Object tables allow you to make "custom" environments where you can control the behaviour of get(), assign(), rm() and ls() using your own functions.
Inspired by ObjectTables by Duncan Temple Lang.
You can install objectable from github with:
# install.packages("devtools")
devtools::install_github("r-lib/objectable")library(objectable)
# Make a super weird environment
ot <- object_table(
get = function(name) runif(nchar(name)),
has = function(name) TRUE
)
ot$a
#> [1] 0.08075014
ot$a
#> [1] 0.834333
ot$abc
#> [1] 0.600760886 0.157208442 0.007399441# Change behaviour of missing symbols
env <- new.env()
ot <- object_table(
get = function(name) {
if (!exists(name, envir = env)) {
stop("`", name, "` does not exist", call. = FALSE)
} else {
env[[name]]
}
},
parent_env = env
)
ot$a <- 10
ot$a
#> [1] 10
ot$b
#> Error: `b` does not exist