\Header{assignOps}{Assignment Operators}
\alias{->}{assignOps}
\alias{->{}>}{assignOps}
\alias{<\Rdash}{assignOps}
\alias{<{}<\Rdash}{assignOps}
\alias{=}{assignOps}
\keyword{data}{assignOps}
\begin{Description}\relax
Assign a value to a name.\end{Description}
\begin{Usage}
\begin{verbatim}
x <- value
x <<- value
value -> x
value ->> x

x = value
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{x}] a variable name (possibly quoted).
\item[\code{value}] a value to be assigned to \code{x}.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
There are three different assignment operators: two of them
have leftwards and rightwards forms.

The operators \code{<-} and \code{=} assign into the
environment in which they are evaluated.  The \code{<-} can be used
anywhere, but the \code{=} is only allowed at the top level (that
is, in the complete expression typed by the user) or as one of the
subexpressions in a braced list of expressions.

The operators \code{<{}<-} and \code{->{}>} cause a search to made through
the environment for an existing definition of the variable being
assigned.  If such a variable is found then its value is redefined,
otherwise assignment takes place globally. Note that their semantics
differ from that in the S language, but is useful in conjunction with
the scoping rules of \R.

In all the assignment operator expressions, \code{x} can be a name
or an expression defining a part of an object to be replaced (e.g.,
\code{z[[1]]}).  The name does not need to be quoted, though it can
be.

The leftwards forms of assignment \code{<- = <{}<-} group right to left,
the other from left to right.\end{Details}
\begin{Value}
\code{value}.  Thus one can use \code{a <- b <- c <- 6}.\end{Value}
\begin{SeeAlso}\relax
\code{\Link{assign}},
\code{\Link{environment}}.\end{SeeAlso}

