require(container) require(badger) knitr::opts_chunk$set( collapse = TRUE, comment = "#", prompt = F, fig.path = "images/README-", tidy = FALSE, cache = FALSE, out.width = "100%" ) old <- options(width = 100L)
The {container} package offers an enhanced version of base R's list
with a
carefully designed set of extract, replace, and remove operations that make
it easier and safer to work with list-like data structures.
{container} objects work similar to base R lists and on top provide
NULL
)In addition, {container} provides specialized data structures
Deque, Set, and Dict
and a special class dict.table
, designed to extend
data.table by
container operations to safely
Manage data columns with dict.table.
# Install release version from CRAN install.packages("container") # Install development version from GitHub devtools::install_github("rpahl/container")
library(container) co <- container(colors = c("Red", "Green"), numbers = c(1, 2, 3), data = cars) co
Use like a base R list
co[["colors"]] <- c("Blue", "Yellow") co[["colors"]] co[2:1]
Safe extract
at(co, "colours") # oops at(co, "colors")
Safe remove
co <- delete_at(co, "colours") # oops co <- delete_at(co, "colors") co
Flexible peek
at(co, "colors") # oops peek_at(co, "colors") peek_at(co, "colors", .default = c("black", "white"))
Safe replace
co <- replace_at(co, num = 1:10) # oops co <- replace_at(co, numbers = 1:10) co
Don't bother using the {container} framework when speed is of high importance.
An exception is the dict.table
class, which is very fast as it is based on
data.table.
Other than that, if computation speed is critical for your application,
we refer you to using base R lists or packages that were optimized for
performance, such as the
collections or
cppcontainers package.
options(old)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.