R: Function Calls

call {base} | R Documentation

## Function Calls

### Description

Create or test for objects of mode `"call"`.

### Usage

    call(name, ...)
    is.call(x)
    as.call(x)

### Arguments

`name` | a non-empty character string naming the function to be called.
`...` | arguments to be part of the call.
`x` | an arbitrary R object.

### Details

`call` returns an unevaluated function call, that is, an unevaluated expression which consists of the named function applied to the given arguments (`name` must be a quoted string which gives the name of a function to be called). Note that although the call is unevaluated, the arguments `...` are evaluated.

`call` is a primitive, so the first argument (named or not) is taken as `name` and the remaining arguments as arguments for the constructed call: `call(x="c", 1,3, name="foo")` is a call to `c` and not to `foo`.

`is.call` is used to determine whether `x` is a call (i.e., of mode `"call"`).

Objects of mode `"list"` can be coerced to mode `"call"`. The first element of the list becomes the function part of the call, so should be a function or the name of one (as a symbol; a quoted string will not do).

### References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

### See Also

`do.call` for calling a function by name and argument list; `Recall` for recursive calling of functions; further `is.language`, `expression`, `function`.

### Examples

    is.call(call) #-> FALSE: Functions are NOT calls

    ## set up a function call to round with argument 10.5
    cl <- call("round", 10.5)
    is.call(cl)# TRUE
    cl
    ## such a call can also be evaluated.
    eval(cl)# [1] 10

    A <- 10.5
    call("round", A)        # round(10.5)
    call("round", quote(A)) # round(A)
    f <- "round"
    call(f, quote(A))       # round(A)
    ## if we want to supply a function we need to use as.call or similar
    f <- round
    ## Not run: call(f, quote(A))  # error: first arg must be character
    (g <- as.call(list(f, quote(A))))
    eval(g)
    ## alternatively but less transparently
    g <- list(f, quote(A))
    mode(g) <- "call"
    g
    eval(g)
    ## see also the examples in the help for do.call

[Package base version 2.6.2 Index]