## Assign a Value to a Name

## Usage

    assign(x, value, pos = -1, envir = sys.frame(sys.parent()),
           inherits = FALSE, immediate = TRUE)
    x <- value
    x <<- value
    value -> x
    value ->> x

## Arguments

`x` | a variable name (given as a quoted string).
`value` | a value to be assigned to `x`.
`pos` | an index into the search list which determines which environment the assignment is to take place in. The environment can also be specified directly with `envir`.
`envir` | the `environent` in which to assign. The default is the environment where the call to `assign` takes place.
`inherits` | should the enclosing frames of the environment be inspected?
`immediate` | an ignored compatibility feature.

## Value

This function is invoked for its side effect, which is assigning `value` to the variable `x`. If no `envir` is specified, then the assignment takes place in the currently active environment.

If `inherits` is `TRUE`, parents of the supplied environment are searched until the variable `x` is encountered. The value is then assigned in the environment in which the variable is encountered. If the symbol is not encountered then assignment takes place in the global environment.

If `inherits` is `FALSE`, assigment takes place in the initial frame of `envir`.

The arrow forms of assignment provide shortcut ways to carry out assignment. The `<-` and `->` forms carry out assignment in the local environment frame, while the `<<-` and `->>` forms 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 the action of `<<-` and `->>` differs from that in the S language, but is useful in conjunction with the scoping rules of R.

## See Also

`get`, `environment`.

## Examples

    for(i in 1:6) { #-- Create objects  'r1', 'r2', ... 'r6' --
     nam <- paste("r",i, sep=".")
     assign(nam, 1:i)
    }
    ls(pat="^r..$")

    ##-- Global assignment within a function:
    myf <- function(x) {
     innerf <- function(x) assign("Global.res", x^2, env = .GlobalEnv)
     innerf(x+1)
    }
    myf(3)
    Global.res # 16

[Package Contents]