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.

_D_e_t_a_i_l_s:

     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.

     `assign' does not dispatch assignment methods, so it cannot be
     used to set elements of vectors, names, attributes, etc.

_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 user's workspace (the global
     environment).

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

_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

     a<-1:4
     assign("a[1]",2)
     a[1]==2          #FALSE
     get("a[1]")==2   #TRUE

