co <- container(a = 1, b = 2, c = 3, d = 4)
# Numeric
co[c(1, 4)] # [a = 1, d = 4]
co[1, 4] # same (comma-sugar)
co[1, 1] # duplicates kept -> [a = 1, a = 1]
co[0:5] # unknowns ignored -> [a = 1, b = 2, c = 3, d = 4]
co[5] # [] (unknown positive index)
# Negative numeric
co[-c(1:2)] # [c = 3, d = 4]
co[-1, -4] # [b = 2, c = 3]
try(co[-1, 3]) # error: cannot mix positive & negative
co[-5] # out-of-bounds negatives ignored -> full container
# Character
co[c("a", "d")] # [a = 1, d = 4]
co["a", "d"] # same
co[letters[1:5]] # unknown names dropped -> [a = 1, b = 2, c = 3, d = 4]
co["x"] # []
# Negative character (drop by name)
co[-c("a", "d")] # [b = 2, c = 3]
co[-"a", -"d"] # [b = 2, c = 3]
# Logical
co[c(TRUE, FALSE, TRUE, FALSE)] # [a = 1, c = 3]
co[TRUE, FALSE] # [a = 1, c = 3] (recycled)
co[c(TRUE, NA)] # [a = 1, c = 3] (NA -> FALSE, warning)
# Mixed numeric and character
co[list(1, "d")] # [a = 1, d = 4]
co[1, "d"] # same
# Alphanumeric ranges (NSE)
co[a:b] # [a = 1, b = 2]
co[a:b, d:c] # [a = 1, b = 2, d = 4, c = 3]
co[1:c] # [a = 1, b = 2, c = 3]
co[d:2] # [d = 4, c = 3, b = 2]
co[-(a:c)] # [d = 4]
# Default-filling of missing items
co[1:5, 0, .default = 0] # [a = 1, b = 2, c = 3, d = 4, 0]
co["a", "b", "z", .default = 0] # [a = 1, b = 2, z = 0]
co[1:2, "z", .default = 3:4] # [a = 1, b = 2, z = (3L 4L)]
co = container(a = 1, b = 2)
co[[1]]
co[["a"]]
co[["x"]]
Run the code above in your browser using DataLab