match.call               package:base               R Documentation

_A_r_g_u_m_e_n_t _M_a_t_c_h_i_n_g

_D_e_s_c_r_i_p_t_i_o_n:

     'match.call' returns a call in which all of the specified
     arguments are specified by their full names.

_U_s_a_g_e:

     match.call(definition = NULL, call = sys.call(sys.parent()),
                expand.dots = TRUE)

_A_r_g_u_m_e_n_t_s:

definition: a function, by default the function from which 'match.call'
          is called.  See details.

    call: an unevaluated call to the function specified by
          'definition', as generated by 'call'.

expand.dots: logical. Should arguments matching '...' in the call be
          included or left as a '...' argument?

_D_e_t_a_i_l_s:

     'function' on this help page means an interpreted function (also
     known as a 'closure'):  'match.call' does not support with
     primitive functions (where argument matching is normally
     positional).

     'match.call' is most commonly used in two circumstances:

        *  To record the call for later re-use: for example most
           model-fitting functions record the call as element 'call' of
           the list they return.  Here the default 'expand.dots = TRUE'
           is appropriate.

        *  To pass most of the call to another function, often
           'model.frame'.  Here the common idiom is that 'expand.dots =
           FALSE' is used, and the '...' elememt of the matched call is
           removed.  An alternative is to explicitly select the
           arguments to be passed on, as is done in 'lm'.

     Calling 'match.call' outside a function without specifying
     'definition' is an error.

_V_a_l_u_e:

     An object of class 'call'.

_R_e_f_e_r_e_n_c_e_s:

     Chambers, J. M. (1998) _Programming with Data. A Guide to the S
     Language_. Springer.

_S_e_e _A_l_s_o:

     'call', 'pmatch', 'match.arg', 'match.fun'.

_E_x_a_m_p_l_e_s:

     match.call(get, call("get", "abc", i = FALSE, p = 3))
     ## -> get(x = "abc", pos = 3, inherits = FALSE)
     fun <- function(x, lower = 0, upper = 1) {
       structure((x - lower) / (upper - lower), CALL = match.call())
     }
     fun(4 * atan(1), u = pi)

