list {base} | R Documentation

## Lists - Generic and Dotted Pairs

### Description

Functions to construct, coerce and check for all kinds of R lists.

### Usage

    list(...)
    pairlist(...)

    as.list(x, ...)
    as.pairlist(x)

    is.list(x)
    is.pairlist(x)

    alist(...)

### Arguments

`...` | objects.
`x` | object to be coerced or tested.

### Details

Most lists in R internally are Generic Vectors, whereas traditional dotted pair lists (as in LISP) are still available.

The arguments to `list` or `pairlist` are of the form `value` or `tag=value`. The functions return a list composed of its arguments with each value either tagged or untagged, depending on how the argument was specified.

`alist` is like `list`, except in the handling of tagged arguments with no value. These are handled as if they described function arguments with no default (cf. `formals`), whereas `list` simply ignores them.

`as.list` attempts to coerce its argument to list type. For functions, this returns the concatenation of the list of formals arguments and the function body. For expressions, the list of constituent calls is returned.

`is.list` returns `TRUE` iff its argument is a `list` or a `pairlist` of `length`> 0, whereas `is.pairlist` only returns `TRUE` in the latter case.

`is.list` and `is.pairlist` are generic: you can write methods to handle of specific classes of objects, see InternalMethods.

An empty pairlist, `pairlist()` is the same as `NULL`. This is different from `list()`.

### References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

### See Also

`vector(., mode="list")`, `c`, for concatenation; `formals`.

### Examples

    data(cars)
    # create a plotting structure
    pts <- list(x=cars[,1], y=cars[,2])
    plot(pts)

    # Argument lists
    f <- function()x
    # Note the specification of a "..." argument:
    formals(f) <- al <- alist(x=, y=2, ...=)
    f
    str(al)

    str(pl <- as.pairlist(ps.options()))

    ## These are all TRUE:
    is.list(pl) && is.pairlist(pl)
    !is.null(list())
    is.null(pairlist())
    !is.list(NULL)
    is.pairlist(pairlist())
    is.null(as.pairlist(list()))
    is.null(as.pairlist(NULL))

[Package Contents]