blob: 2b61e8160d5998ac132b7f0ec67265c57f388a4b [file] [log] [blame]
% File src/library/base/man/as.data.frame.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2018 R Core Team
% Distributed under GPL 2 or later
\name{as.data.frame}
\title{Coerce to a Data Frame}
\alias{as.data.frame}
\alias{is.data.frame}
\alias{as.data.frame.AsIs}
\alias{as.data.frame.character}
\alias{as.data.frame.complex}
\alias{as.data.frame.data.frame}
\alias{as.data.frame.default}
\alias{as.data.frame.factor}
\alias{as.data.frame.integer}
\alias{as.data.frame.list}
\alias{as.data.frame.logical}
\alias{as.data.frame.raw}
\alias{as.data.frame.matrix}
\alias{as.data.frame.model.matrix}
\alias{as.data.frame.noquote}
\alias{as.data.frame.numeric}
\alias{as.data.frame.ordered}
\alias{as.data.frame.ts}
\alias{as.data.frame.vector}
\alias{as.data.frame.array}
\alias{as.data.frame.difftime}
\description{
Functions to check if an object is a data frame, or coerce it if possible.
}
\usage{
as.data.frame(x, row.names = NULL, optional = FALSE, \dots)
\method{as.data.frame}{character}(x, \dots,
stringsAsFactors = default.stringsAsFactors())
\method{as.data.frame}{list}(x, row.names = NULL, optional = FALSE, \dots,
cut.names = FALSE, col.names = names(x), fix.empty.names = TRUE,
stringsAsFactors = default.stringsAsFactors())
\method{as.data.frame}{matrix}(x, row.names = NULL, optional = FALSE,
make.names = TRUE, \dots,
stringsAsFactors = default.stringsAsFactors())
is.data.frame(x)
}
\arguments{
\item{x}{any \R object.}
\item{row.names}{\code{NULL} or a character vector giving the row
names for the data frame. Missing values are not allowed.}
\item{optional}{logical. If \code{TRUE}, setting row names and
converting column names (to syntactic names: see
\code{\link{make.names}}) is optional. Note that all of \R's
\pkg{base} package \code{as.data.frame()} methods use
\code{optional} only for column names treatment, basically with the
meaning of \code{\link{data.frame}(*, check.names = !optional)}.
See also the \code{make.names} argument of the \code{matrix} method.}
\item{\dots}{additional arguments to be passed to or from methods.}
\item{stringsAsFactors}{logical: should the character vector be converted
to a factor?}
%% list method:
\item{cut.names}{logical or integer; indicating if column names with
more than 256 (or \code{cut.names} if that is numeric) characters
should be shortened (and the last 6 characters replaced by \code{" ..."}).}
\item{col.names}{(optional) character vector of column names.}
\item{fix.empty.names}{logical indicating if empty column names, i.e.,
\code{""} should be fixed up (in \code{\link{data.frame}}) or not.}
%% matrix method:
\item{make.names}{a \code{\link{logical}}, i.e., one of \code{FALSE, NA, TRUE},
indicating what should happen if the row names (of the matrix
\code{x}) are invalid. If they are invalid, the default,
\code{TRUE}, calls \code{\link{make.names}(*, unique=TRUE)};
\code{make.names=NA} will use \dQuote{automatic} row names and a
\code{FALSE} value will signal an error for invalid row names.}
}
\value{
\code{as.data.frame} returns a data frame, normally with all row names
\code{""} if \code{optional = TRUE}.
\code{is.data.frame} returns \code{TRUE} if its argument is a data
frame (that is, has \code{"data.frame"} amongst its classes)
and \code{FALSE} otherwise.
}
\details{
\code{as.data.frame} is a generic function with many methods, and
users and packages can supply further methods. For classes that act
as vectors, often a copy of \code{as.data.frame.vector} will work
as the method.
If a list is supplied, each element is converted to a column in the
data frame. Similarly, each column of a matrix is converted separately.
This can be overridden if the object has a class which has
a method for \code{as.data.frame}: two examples are
matrices of class \code{"\link{model.matrix}"} (which are
included as a single column) and list objects of class
\code{"\link{POSIXlt}"} which are coerced to class
\code{"\link{POSIXct}"}.
Arrays can be converted to data frames. One-dimensional arrays are
treated like vectors and two-dimensional arrays like matrices. Arrays
with more than two dimensions are converted to matrices by
\sQuote{flattening} all dimensions after the first and creating
suitable column labels.
Character variables are converted to factor columns unless protected
by \code{\link{I}}.
If a data frame is supplied, all classes preceding \code{"data.frame"}
are stripped, and the row names are changed if that argument is supplied.
If \code{row.names = NULL}, row names are constructed from the names
or dimnames of \code{x}, otherwise are the integer sequence
starting at one. Few of the methods check for duplicated row names.
Names are removed from vector columns unless \code{\link{I}}.
}
\references{
Chambers, J. M. (1992)
\emph{Data for models.}
Chapter 3 of \emph{Statistical Models in S}
eds J. M. Chambers and T. J. Hastie, Wadsworth & Brooks/Cole.
}
\seealso{
\code{\link{data.frame}}, \code{\link{as.data.frame.table}} for the
\code{table} method (which has additional arguments if called directly).
}
\keyword{classes}
\keyword{methods}