Learn R Programming

statnet.common (version 4.10.0)

simplify_simple: Convert a list to an atomic vector if it consists solely of atomic elements of length 1.

Description

This behaviour is not dissimilar to that of simplify2array(), but it offers more robust handling of empty or NULL elements and never promotes to a matrix or an array, making it suitable to be a column of a data.frame.

Usage

simplify_simple(
  x,
  toNA = c("null", "empty", "keep"),
  empty = c("keep", "unlist"),
  ...
)

Value

an atomic vector or a list of the same length as x.

Arguments

x

an R list to be simplified.

toNA

a character string indicating whether NULL entries (if "null") or 0-length entries including NULL (if "empty") should be replaced with NAs before attempting conversion; specifying keep or FALSE leaves them alone (typically preventing conversion).

empty

a character string indicating how empty lists should be handled: either "keep", in which case they are unchanged or "unlist", in which cases they are unlisted (typically to NULL).

...

additional arguments passed to unlist().

Examples

Run this code

(x <- as.list(1:5))
stopifnot(identical(simplify_simple(x), 1:5))

x[3] <- list(NULL) # Put a NULL in place of 3.
x
stopifnot(identical(simplify_simple(x, FALSE), x)) # Can't be simplified without replacing the NULL.

stopifnot(identical(simplify_simple(x), c(1L,2L,NA,4L,5L))) # NULL replaced by NA and simplified.

x[[3]] <- integer(0)
x
stopifnot(identical(simplify_simple(x), x)) # A 0-length vector is not replaced by default,
stopifnot(identical(simplify_simple(x, "empty"), c(1L,2L,NA,4L,5L))) # but can be.

(x <- lapply(1:5, function(i) c(i,i+1L))) # Elements are vectors of equal length.
simplify2array(x) # simplify2array() creates a matrix,
stopifnot(identical(simplify_simple(x), x)) # but simplify_simple() returns a list.

Run the code above in your browser using DataLab