Add aperm()
and t()
for list-environment arrays.
parse_env_subset()
gained argument is_variable
to control
whether or not the inferred element named should be checked if it
is a valid variable name.
map()
is formally deprecated; use mapping()
instead.
Dropped the defunct usage of listenv(length = n)
, meaning it no
longer gives an error but instead produces a listenv
with an
element named length
.
lengths()
for listenv
is no longer exported.parse_env_subset(x[1, names])
on a listenv x
matrix would throw
error Error in if (any(i < 0)) { : missing value where TRUE/FALSE needed
if one of the elements in names
specifies a non-existing
column name.
parse_env_subset(x[])
on a listenv x
would throw an error on
Invalid subset: x[]
.
parse_env_subset(x[names])
on a listenv x
would throw an error
on length(x) = 2 > 1 in coercion to logical(1)
when
length(names) > 1
and _R_CHECK_LENGTH_1_LOGIC2_=true
.
parse_env_subset(x[1,idxs])
on a listenv x
would throw an error
on length(x) = 2 > 1 in coercion to logical(1)
with
length(idxs) > 1
and _R_CHECK_LENGTH_1_LOGIC2_=true
.
parse_env_subset(x[[names]])
on a regular environment x
with
length(names) > 1
would not throw an error, whereas x[[names]]
would.
parse_env_subset(x[[1]])
on a regular environment x
would not
throw an error, whereas x[[1]]
would.
Now it is possible to set the dimension on an empty list
environment without first resizing it with length()
, e.g. x <- listenv(); dim(x) <- c(2, 3)
.
Now it is possible to remove multiple elements by assigning NULL,
e.g. x[c(2:3, 10)] <- NULL
and x[, "B"] <- NULL
.
Added lengths()
for list environments. Requires R (>= 3.3.0).
dim_na(x) <- dims
, where dims
contain exactly one missing
value, will set the "missing" dimension based on the length of x
and the other dimensions specified, e.g. with length(x) == 6
,
dim_na(x) <- c(2, NA)
will set dim(x) <- c(2, 3)
. This works
for all types of object to which dimensions can be assigned - not
only list environments.
Added is.matrix()
, is.array()
, as.vector()
, and as.matrix()
for list environments.
print()
on a named, empty list environment would output an empty
string.
Removing an element from a list environment did not remove
dimensions, e.g. x$a <- NULL
.
Function map()
has been renamed to mapping()
and same for the
corresponding replacement function. The map()
and map<-()
functions will soon be deprecated and eventually defunct.
x <- listenv(length = n)
is defunct; use x <- listenv(); length(x) <- n
instead.
parse_env_subset(x[[idx]])
for list environment x
and index
idx
claimed x[[idx]]
existed as long as idx
in
[1,length(x)]
, but it forgot to check if element really existed,
which may not be true if x
has been expanded.Add support for assigning elements when creating list environment
similarly how to lists work, e.g. x <- listenv(a = 1, b = 2)
.
length(x) <- n
now expand/truncate a list environment.
Added unlist()
and all.equal()
for list environments.
x <- listenv(length = n)
; use x <- listenv(); length(x) <- n
instead.as.listenv(x)
would drop NULL elements in x
.
x[idxs]
, x[name] <- y
, and x$<name> <- y
would introduce NA
names for non-named list environments.
Added as.listenv()
.
CONSISTENCY: Assigning NULL now removes element just as lists,
e.g. x$a <- NULL
. To assign value NULL, do x['a'] <- list(NULL)
.
Added support for subsetting with [()
, which returns another list
environment, e.g. x[2:3]
, x[-1]
, and x[c(TRUE, FALSE)]
.
Added [<-
assignment, e.g. x['a'] <- 1
and x[2:3] <- c(3,8)
.
CLEANUP: Dropped stray debug code.
parse_env_subset()
.print()
on listenv
handles empty and no-named listenv
:s
better.listenv(length = ...)
always allocates internal variables.get_variable()
gained argument mustExist
.print()
for listenv
:s.tempvar()
of R.utils.