R: Convert a list to an atomic vector if it consists solely of...

simplify_simple {statnet.common} | R Documentation

## 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"),
      ...
    )

### 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 `NA`s 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()`.

### Value

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

### Examples

    (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.

[Package statnet.common version 4.6.0 Index]