\Header{vector}{Vectors}
\alias{as.vector}{vector}
\methalias{as.vector.factor}{vector}
\alias{is.vector}{vector}
\keyword{classes}{vector}
\begin{Description}\relax
\code{vector} produces a vector of the given length and mode.

\code{as.vector}, a generic, attempts to coerce its argument into a
vector of mode \code{mode} (the default is to coerce to whichever mode
is most convenient).  The attributes of \code{x} are removed.

\code{is.vector} returns \code{TRUE} if \code{x} is a vector (of mode
logical, integer, real, complex, character or list if not specified)
and \code{FALSE} otherwise.\end{Description}
\begin{Usage}
\begin{verbatim}
vector(mode = "logical", length = 0)
as.vector(x, mode = "any")
is.vector(x, mode = "any")
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{mode}] A character string giving an atomic mode, or \code{"any"}.
\item[\code{length}] A non-negative integer specifying the desired length.
\item[\code{x}] An object.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
\code{is.vector} returns \code{FALSE} if \code{x} has any attributes
except names.  (This is incompatible with S.)  On the other hand,
\code{as.vector} removes \emph{all} attributes including names.

Note that factors are \emph{not} vectors;  \code{is.vector} returns
\code{FALSE} and \code{as.vector} converts to character mode.\end{Details}
\begin{Value}
For \code{vector}, a vector of the given length and mode.  Logical
vector elements are initialized to \code{FALSE}, numeric vector
elements to \code{0} and character vector elements to \code{""}.\end{Value}
\begin{References}\relax
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
\emph{The New S Language}.
Wadsworth \& Brooks/Cole.\end{References}
\begin{SeeAlso}\relax
\code{\Link{c}}, \code{\Link{is.numeric}}, \code{\Link{is.list}}, etc.\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
df <- data.frame(x=1:3, y=5:7)
## Don't run: 
## Error:
  as.vector(data.frame(x=1:3, y=5:7), mode="numeric")
## End Don't run

x <- c(a = 1, b = 2)
is.vector(x)
as.vector(x)
all.equal(x, as.vector(x)) ## FALSE

###-- All the following are TRUE:
is.list(df)
! is.vector(df)
! is.vector(df, mode="list")

is.vector(list(), mode="list")
is.vector(NULL,   mode="NULL")
\end{ExampleCode}
\end{Examples}

