unloadNamespace("dplyr") require(container) has = container::has has_name = container::has_name knitr::opts_chunk$set( comment = "#", prompt = F, tidy = FALSE, cache = FALSE, collapse = T ) old <- options(width = 100L)
Don't bother using the container
framework if 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 list or packages that were optimized for
performance, such as the
collections package.
Consider using the container
framework over base list
if you are looking
for ...
Furthermore consider using dict.table
for a flexible and robust way to
manage data columns of data.table
s.
In an interactive R session a container
can be used similar to a base
R list
, but also provides some extra features.
For easier typing it's recommended to use the shorter cont
.
library(container) co = cont(a = 1, b = 1:10) # same as co = container(a = 1, b = 1:10)
The container print method is designed to be very compact.
print(co)
For more verbose output, either convert to a base list
...
as.list(co)
or use str
.
str(co)
Both length
and names
work as usual.
length(co) names(co) names(co)[1] <- "A" co
A container can also be constructed from a list.
l = list(x = (1:2)^1, y = (1:2)^2) co2 = as.container(l) co2
Elements can be added by concatenation,
c(co, co2)
or name,
co[["c"]] <- 3 co
and containers can be nested.
co[["co2"]] <- co2 co
In contrast to base R list
, elements cannot be added via positional index
if it exceeds the container's length.
co[[5]] <- 5
Single or multiple value replacement works as usual.
co[[3]] <- 0 co[1:2] <- 0 co
In contrast to base list
, containers can take a mix of numeric and character
indices.
co[list("A", 2, "c")] <- list(1, 2, "three") co
Another option for container object is to replace by value.
co[[{"three"}]] <- 3 co
This works for any data type.
co[[{co2}]] <- 3 co
The standard operators to access elements also should be familiar to R users.
^[Note that the $
operator does not work.]
co[[1]]
co[1:3]
As another option, you can pass any number of indices, possibly mixed as numeric and character.
co[1, 3, "b"] co[2:1, "A"]
Invalid indices don't produce NULL
s but are just ignored.
co[1:100]
Count the number of elements.
count(co, 1) count(co, 3)
Use the apply family.
sapply(co, is.numeric) sapply(co, function(x) x + 1)
Next, see vignette Container operations for robust code.
options(old)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.