% File src/library/base/man/dim.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2010 R Core Team
% Distributed under GPL 2 or later

\name{dim}
\alias{dim}
\alias{dim.data.frame}
\alias{dim<-}
\title{Dimensions of an Object}
\usage{
dim(x)
dim(x) <- value
}
\description{
  Retrieve or set the dimension of an object.
}
\arguments{
  \item{x}{an \R object, for example a matrix, array or data frame.}
  \item{value}{for the default method, either \code{NULL} or
    a numeric vector, which is coerced to integer (by truncation).}
}
\details{
  The functions \code{dim} and \code{dim<-} are \link{internal generic}
  \link{primitive} functions.

  \code{dim} has a method for \code{\link{data.frame}}s, which returns
  the lengths of the \code{row.names} attribute of \code{x} and
  of \code{x} (as the numbers of rows and columns respectively).
}
\value{
  For an array (and hence in particular, for a matrix) \code{dim} retrieves
  the \code{dim} attribute of the object.  It is \code{NULL} or a vector
  of mode \code{\link{integer}}.

  The replacement method changes the \code{"dim"} attribute (provided the
  new value is compatible) and removes any \code{"dimnames"} \emph{and}
  \code{"names"} attributes.
}
\references{
  Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
  \emph{The New S Language}.
  Wadsworth & Brooks/Cole.
}
\seealso{
  \code{\link{ncol}}, \code{\link{nrow}} and \code{\link{dimnames}}.
}
\examples{
x <- 1:12 ; dim(x) <- c(3,4)
x

# simple versions of nrow and ncol could be defined as follows
nrow0 <- function(x) dim(x)[1]
ncol0 <- function(x) dim(x)[2]
}
\keyword{array}
