assign {base}R Documentation

Assign a Value to a Name

Description

Assign a value to a name in an environment.

Usage

assign(x, value, pos = -1, envir = pos.to.env(pos),
       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. A character string may also be used. The environment can also be specified directly with envir.
envir the environment 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, enclosing environments 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, assignment 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, exists, 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]