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 # [colors = ("Red" "Green"), numbers = (1 2 3), data = <<data.frame(50x2)>>]
Use like a base R list
co[["colors"]] <- c("Blue", "Yellow") co[["colors"]] # [1] "Blue" "Yellow" co[2:1] # [numbers = (1 2 3), colors = ("Blue" "Yellow")]
Safe extract
at(co, "colours") # oops # Error: index 'colours' not found at(co, "colors") # [colors = ("Blue" "Yellow")]
Safe remove
co <- delete_at(co, "colours") # oops # Error: names(s) not found: 'colours' co <- delete_at(co, "colors") co # [numbers = (1 2 3), data = <<data.frame(50x2)>>]
Flexible peek
at(co, "colors") # oops # Error: index 'colors' not found peek_at(co, "colors") # [] peek_at(co, "colors", .default = c("black", "white")) # [colors = ("black" "white")]
Safe replace
co <- replace_at(co, num = 1:10) # oops # Error: names(s) not found: 'num' co <- replace_at(co, numbers = 1:10) co # [numbers = (1L 2L 3L 4L ...), data = <<data.frame(50x2)>>]
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.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4