\Header{data.frame}{Data Frames}
\alias{as.data.frame}{data.frame}
\methalias{as.data.frame.AsIs}{data.frame}
\methalias{as.data.frame.character}{data.frame}
\methalias{as.data.frame.complex}{data.frame}
\methalias{as.data.frame.data.frame}{data.frame}
\methalias{as.data.frame.default}{data.frame}
\methalias{as.data.frame.factor}{data.frame}
\methalias{as.data.frame.integer}{data.frame}
\methalias{as.data.frame.list}{data.frame}
\methalias{as.data.frame.logical}{data.frame}
\methalias{as.data.frame.matrix}{data.frame}
\methalias{as.data.frame.model.matrix}{data.frame}
\methalias{as.data.frame.numeric}{data.frame}
\methalias{as.data.frame.ordered}{data.frame}
\methalias{as.data.frame.ts}{data.frame}
\methalias{as.data.frame.vector}{data.frame}
\alias{is.data.frame}{data.frame}
\alias{plot.data.frame}{data.frame}
\alias{print.data.frame}{data.frame}
\alias{row.names}{data.frame}
\methalias{row.names.data.frame}{data.frame}
\methalias{row.names.default}{data.frame}
\alias{row.names<\Rdash}{data.frame}
\methalias{row.names<\Rdash.data.frame}{data.frame}
\methalias{row.names<\Rdash.default}{data.frame}
\alias{xpdrows.data.frame}{data.frame}
\alias{[.AsIs}{data.frame}
\keyword{classes}{data.frame}
\keyword{methods}{data.frame}
\begin{Description}\relax
These functions create or manipulate data frames, tightly coupled
collections of variables which share many of the properties of
matrices and of lists, used as the fundamental data structure by most
of \R's modeling software.\end{Description}
\begin{Usage}
\begin{verbatim}
data.frame(..., row.names = NULL, check.rows = FALSE,
        check.names = TRUE)

as.data.frame(x, row.names = NULL, optional)
is.data.frame(x)

row.names(x)
row.names(x) <- names
print(x, ..., digits = NULL, quote = FALSE, right = TRUE)
plot (x, ...)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{...}] these arguments are of either the form \code{value} or
\code{tag=value}.  Component names are created based on the tag (if
present) or the deparsed argument itself.
\item[\code{row.names}] a character vector giving the row names for the data
frame.
\item[\code{check.rows}] if \code{TRUE} then the rows are checked for
consistency of length and names.
\item[\code{check.names}] logical.  If \code{TRUE} then the names of the
variables in the data frame are checked to ensure that they are
syntactically valid variable names.  If necessary they are adjusted
(by \code{\Link{make.names}}) so that they are.
\item[\code{data.frame.obj}] objects of class \code{data.frame}.
\item[\code{...}] optional arguments to \code{print} or \code{plot} methods.
\item[\code{optional}] logical. If \code{TRUE}, setting row names is
optional.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
Non-numeric variables passed to \code{data.frame} are converted to
factor columns unless protected by \code{\Link{I}}.  This applies to
character and logical variables, in particular.  It also applies to
adding columns to a data frame.

If a list or data frame or matrix is passed to \code{data.frame}
it is as if each column had been passed as a separate argument,
with the exception of matrices of class \code{\Link{model.matrix}}.\end{Details}
\begin{Value}
For \code{data.frame(.)} a data frame, a matrix-like stucture whose
columns may be of differing types (numeric, factor and character).

\code{as.data.frame} is generic function with many methods.   It
attempts to coerce its argument to be a data frame.

\code{is.data.frame} returns \code{TRUE} if its argument is a data
frame and \code{FALSE} otherwise.

\code{row.names} can be used to set and retrieve the row names of a
data frame, similarly to \code{\Link{rownames}} for arrays (and
it is a generic function that calls \code{rownames} for an
array argument.\end{Value}
\begin{SeeAlso}\relax
\code{\Link{read.table}},
\code{\Link{Math.data.frame}} etc, about
\emph{Group} methods for \code{data.frame}s;
\code{\Link{make.names}}.\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
L3 <- LETTERS[1:3]
str(d <- data.frame(cbind(x=1, y=1:10), fac=sample(L3, 10, repl=TRUE)))

## The same with automatic column names:
str(     data.frame(cbind(  1,   1:10),     sample(L3, 10, repl=TRUE)))
is.data.frame(d)

## do not convert to factor, using I() :
str(cbind(d, char = I(letters[1:10])), vec.len = 10)

all(1:10 == row.names(d))# TRUE (coercion)
\end{ExampleCode}
\end{Examples}

