assign                 package:base                 R Documentation

_A_s_s_i_g_n _a _V_a_l_u_e _t_o _a _N_a_m_e

_D_e_s_c_r_i_p_t_i_o_n:

     Assign a value to a name in an environment.

_U_s_a_g_e:

     assign(x, value, pos = -1, envir = pos.to.env(pos),
            inherits = FALSE, immediate = TRUE)
     x <- value
     x <<- value
     value -> x
     value ->> x

_A_r_g_u_m_e_n_t_s:

       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.

_V_a_l_u_e:

     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.

_S_e_e _A_l_s_o:

     `get', `exists', `environment'.

_E_x_a_m_p_l_e_s:

     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

