Ну, у вызова нет формул , только фактические аргументы ... Разница в том, что такая функция, как foo <- function(x, y, ..., z=42)
, может вызываться с фактической аргументы типа foo(42, bar=13)
.
... Но получить аргументы можно следующим образом:
a <- call('foo', a=42, 13)
as.list(a)[-1]
#$a
#[1] 42
#
#[[2]]
#[1] 13
... с другой стороны, обычно (не всегда) можно найти фактическую функцию и найтиформальности для него:
a <- quote(which(letters=='g'))
formals(match.fun(a[[1]]))
#$x
#
#$arr.ind
#[1] FALSE
#
#$useNames
#[1] TRUE
Здесь вам нужно добавить некоторую обработку ошибок, если функция не может быть найдена (как при вызове foo
выше) ...