call or
call(...).
call(NAME, ...) is.call(x) as.call(x)
call creates a call to the named function, using the remaining
arguments as the arguments to the function call.
is.call checks whether
x is a function call
as.call tries to coerce
x to a function call.
The
as.call function is generic; currently there are no methods written
for it.
One use of
call is in functions that create other functions.
The
d.order example below is a non-trivial example;
d.order is a
function that creates the density function of an order statistic from
a sample from a specific distribution.
funs <- c("sin", "cos")
x <- 30*pi/180
i <- 1
my.call <- call(funs[i], as.name("x"))
# my.call ready to be evaluated or put into an expression
eval (my.call)
# function that creates the density function of an order statistic
d.order <- function(n, r, distfun, densityfun)
{
f <- function(x)
NULL
con <- exp(lgamma(n + 1) - lgamma(r) - lgamma(n - r + 1))
c1 <- call(substitute(distfun), as.name("x"))
c2 <- call("^", call("-", 1, c1), n - r)
c3 <- call("^", c1, r - 1)
c4 <- call("*", con, call("*", c2, call("*", c3, call(substitute(
densityfun), as.name("x")))))
f[[length(f)]] <- c4
f
}
d.median.norm.9 <- d.order(9, 5, pnorm, dnorm)
d.median.norm.9(-2:2)