c                    package:base                    R Documentation

Combine Values into a Vector or List

Description:

     This is a generic function which combines its arguments.

     The default method combines its arguments to form a vector. All
     arguments are coerced to a common type which is the type of the
     returned value, and all attributes except names are removed.

Usage:

     c(..., recursive=FALSE)

Arguments:

     ...: objects to be concatenated.

recursive: logical.  If 'recursive = TRUE', the function recursively
          descends through lists (and pairlists) combining all their
          elements into a vector.

Details:

     The output type is determined from the highest type of the
     components in the hierarchy NULL < raw < logical < integer < real
     < complex < character < list < expression.  Pairlists are treated
     as lists, but non-vector components (such names and calls) are
     treated as one-element lists which cannot be unlisted even if
     'recursive = TRUE'.

     'c' is sometimes used for its side effect of removing attributes
     except names, for example to turn an array into a vector.
     'as.vector' is a more intuitive way to do this, but also drops
     names.  Note too that methods other than the default are not
     required to do this (and they will almost certainly preserve a
     class attribute).

Value:

     'NULL' or an expression or a vector of an appropriate mode. (With
     no arguments the value is 'NULL'.)

S4 methods:

     This function is S4 generic, but with argument list '(x, ...,
     recursive = FALSE)'.

References:

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

See Also:

     'unlist' and 'as.vector' to produce attribute-free vectors.

Examples:

     c(1,7:9)
     c(1:5, 10.5, "next")

     ## uses with a single argument to drop attributes
     x <- 1:4
     names(x) <- letters[1:4]
     x
     c(x)          # has names
     as.vector(x)  # no names
     dim(x) <- c(2,2)
     x
     c(x)
     as.vector(x)

     ## append to a list:
     ll <- list(A = 1, c="C")
     ## do *not* use
     c(ll, d = 1:3) # which is == c(ll, as.list(c(d=1:3))
     ## but rather
     c(ll, d = list(1:3))# c() combining two lists

     c(list(A=c(B=1)), recursive=TRUE)

     c(options(), recursive=TRUE)
     c(list(A=c(B=1,C=2), B=c(E=7)), recursive=TRUE)

