Quoted function calls are one of the two types of symbolic objects in R. They represent the action of calling a function, possibly with arguments. There are two ways of creating a quoted call:
By quoting it. Quoting prevents functions from being called. Instead, you get the description of the function call as an R object. That is, a quoted function call.
See section below for the difference between
call2() and the base
call2(.fn, ..., .ns = NULL)
Function to call. Must be a callable object: a string, symbol, call, or a function.
<dynamic> Arguments for the function call. Empty arguments are preserved.
Namespace with which to prefix
call2() is more flexible and convenient than
The function to call can be a string or a callable
object: a symbol, another call (e.g. a
[[ call), or a
function to inline.
base::call() only supports strings and you
need to use
base::as.call() to construct a call with a callable
call2(list, 1, 2) as.call(list(list, 1, 2))
.ns argument is convenient for creating namespaced calls.
call2("list", 1, 2, .ns = "base") ns_call <- as.call(list(as.name("::"), as.name("list"), as.name("base"))) as.call(list(ns_call, 1, 2))
args <- list(na.rm = TRUE, trim = 0) call2("mean", 1:10, !!!args) as.call(c(list(as.name("mean"), 1:10), args))
In rlang 0.2.0
lang() was soft-deprecated and renamed to
In early versions of rlang calls were called "language" objects in
order to follow the R type nomenclature as returned by
base::typeof(). The goal was to avoid adding to the confusion
between S modes and R types. With hindsight we find it is better to
use more meaningful type names.
# fn can either be a string, a symbol or a call call2("f", a = 1)#> f(a = 1)call2(quote(f), a = 1)#> f(a = 1)call2(quote(f()), a = 1)#> f()(a = 1)#' Can supply arguments individually or in a list call2(quote(f), a = 1, b = 2)#> f(a = 1, b = 2)#> f(a = 1, b = 2)# Creating namespaced calls is easy: call2("fun", arg = quote(baz), .ns = "mypkg")#> mypkg::fun(arg = baz)# Empty arguments are preserved: call2("[", quote(x), , drop = )#> x[, drop = ]