\HeaderA{attr}{Object Attributes}{attr}
\aliasA{attr<\Rdash}{attr}{attr<.Rdash.}
\keyword{attribute}{attr}
\begin{Description}\relax
Get or set specific attributes of an object.
\end{Description}
\begin{Usage}
\begin{verbatim}
attr(x, which)
attr(x, which) <- value
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{x}] an object whose attributes are to be accessed.
\item[\code{which}] a character string specifying which attribute is to be
accessed.
\item[\code{value}] an object, the new value of the attribute.
\end{ldescription}
\end{Arguments}
\begin{Value}
These functions provide access to a single attribute of an object.  The
first form returns the value of the named attribute.  The
replacement form causes the named attribute to take the value specified.

The first form first looks for an exact match to \code{which} amongst the
attributes of \code{x}, then a partial match.  If no exact match is
found and more than one partial match is found, the result is \code{NULL}.

Note that some attributes (namely \code{class}, \code{comment},
\code{dim}, \code{dimnames}, \code{names}
and \code{tsp}) are treated specially and have restrictions on the
values which can be set.
\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{\LinkA{attributes}{attributes}}
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
# create a 2 by 5 matrix
x <- 1:10
attr(x,"dim") <- c(2, 5)
\end{ExampleCode}
\end{Examples}

