Learn R Programming

container

container provides 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.

Why container?

  • safe and flexible operations to
    • extract (built-in default values, no unintended NULL)
    • add and replace (mixed indices, no unintended overrides)
    • remove (loose or strict deletion, remove by index or value)
  • compact printing
  • optional reference semantics

In addition, this package 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.

Installation

# Install release version from CRAN
install.packages("container")

# Install development version from GitHub
devtools::install_github("rpahl/container")

Usage

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)>>]

Safe extract

at(co, "colours")   # oops
# Error: index 'colours' not found

at(co, "colors")
# [colors = ("Red" "Green")]

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)>>]

Getting Started

Copy Link

Version

Install

install.packages('container')

Monthly Downloads

392

Version

1.0.5

License

GPL-3

Issues

Pull Requests

Stars

Forks

Maintainer

Roman Pahl

Last Published

December 2nd, 2024

Functions in container (1.0.5)

ContainerS3

Container - Enhancing R's list
OpsExtract

Extract Parts of a Container Object
Dict

Dict Class
OpsLogic

Logic Operators
Iterable

Iterable abstract class interface
Deque

Deque Class
OpsCompare

Comparison Operators
Container

Container Class
Iterator

Iterator Class
OpsReplace

Replace Parts of a Container
addleft

Add Elements to the Left of Deques
SetS3

Set and ordered Set
add

Add Elements to Containers
Set

Set Class
clone

Clone an Object
clear

Clear a Container
at

Extract Elements Safely
at2

Extract Single Elements Safely
OrderedSet

OrderedSet Class
discard

Discard Container Elements
delete

Delete Container Elements Safely
delete_at

Delete Elements at Indices Safely
deprecated

Deprecated Functions
DequeS3

Deque - Double-Ended Queue
container_options

Set Container Package Options
count

Count Elements
dict.table

Combining Dict and data.table
DictS3

A Dictionary
is_empty

Check if Object is Empty
rename

Rename Elements Safely
peek_at2

Peek at Single Index
peek

Peek at Left or Right of a Deque
iterS3

Iterate over Sequences
pop

Get and Remove Element
replace

Replace Values in Containers Safely
rotate

Rotate Elements
update

Update Object with Elements from Another Object
has_name

Check for Name
rev

Reverse Elements
has

Check for Element
peek_at

Peek at Indices
replace_at

Replace Values at Indices Safely
unpack

Unpack Nested Objects
discard_at

Discard Elements at Indices
OpsArithmetic

Arithmetic Operators