vector
Vectors (Simple Objects)
Description
Creates or tests for vectors.
Usage
vector(mode = "logical", length = 0L)
is.vector(x, mode = "any")
as.vector(x, mode = "any")
Arguments
x |
any object.
|
mode |
a character string giving the wanted mode.
|
length |
an integer value giving the wanted length.
|
Details
Note the difference between coercing to a simple object
and setting the
mode attribute:
- Running mode(x) <- mode(y) returns an object x with a different mode, but it leaves all other attributes of the object unchanged (so, for example, a matrix stays a matrix).
- Running as.vector(x, mode(y)) returns an object with no attributes.
Similarly,
is.vector returns
FALSE for a matrix.
Note that a vector is an object without dimensions (or only one dimension),
which is not hierarchical (not a list).
See the Examples section on how to test for such an object without
dimensions (or only one dimension), not a list.
Also note that a vector as used here differs from the
class "vector". The functions is.vector(x) and is(x,"vector") are different:
the latter tests whether x inherits from the new-style
"vector" class.
Value
vector | returns a simple object of the desired mode and length. |
is.vector | returns TRUE if x is a simple object of the mode specified. Otherwise, it returns
FALSE. If the mode is "any", any simple object matches; that is, it can be
an object with no attributes. Note that, in this sense, a list is typically a vector. |
as.vector | returns an object of the same length as x, with data resulting
from coercing the elements of x to the specified mode. For most simple
objects, the return value is simply x.
- If the specified mode is "numeric",
this function returns an object with the storage mode "double".
- If the specified mode is "any" (the default), this function creates an object like x, but with no attributes.
By default, running as.vector with mode "any" just removes attributes; however, if x is a factor (which is more like character data than integer data), first it is converted to a character vector.
|
Bugs
A list may have names and still test TRUE with is.vector, but
atomic objects with names will test FALSE.
See Also
Examples
vector("list", 10) # list of length 10, initialized to null elements.
as.vector(x, mode(y)) # make a simple object of same mode as y
is.vector(list(1:3)) # returns TRUE
is.vector(matrix(NA,2,3)) # returns FALSE
x <- 1:5
names(x) <- letters[1:5]
is.vector(x) # TRUE
# TRUE, x is a vector in the ordinary sense
length(dim(x)) == 0 && !is.list(x)
# TRUE, alternative form, allows 1-d array
length(dim(x)) <= 1 && !is.list(x)
y <- list(a=1, b=2)
# T, because y has no attributes (names are allowed for a list)
is.vector(y)
# F, not a vector in the ordinary sense
length(dim(y)) == 0 && !is.list(y)