| c {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
## S3 Generic function
c(...)
## Default S3 method:
c(..., recursive = FALSE, use.names = TRUE)
Arguments
... |
objects to be concatenated. All |
recursive |
logical. If |
use.names |
logical indicating if |
Details
The output type is determined from the highest type of the components
in the hierarchy NULL < raw < logical < integer < double < complex < character
< list < expression. Pairlists are treated as lists, whereas non-vector
components (such as names / symbols and calls)
are treated as one-element lists
which cannot be unlisted even if recursive = TRUE.
If the output type is complex, logical, integer, and double
NAs keep their imaginary parts zero when coerced, and hence will
not become NA_complex_ (with imaginary part NA).
There is a c.factor method which combines factors into
a factor.
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 that c methods other than the default are not required
to remove attributes (and they will almost certainly preserve a class attribute).
This is a primitive function.
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, ...).
References
Becker RA, Chambers JM, Wilks AR (1988). The New S Language. Chapman and Hall/CRC, London.
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
## descend through lists:
c(list(A = c(B = 1)), recursive = TRUE)
c(list(A = c(B = 1, C = 2), B = c(E = 7)), recursive = TRUE)