R - Получить формальности из объекта вызова - PullRequest
5 голосов
/ 19 декабря 2011

Как я могу получить формалы (аргументы) из объекта вызова? Formals () работает только с функциями.

1 Ответ

6 голосов
/ 19 декабря 2011

Ну, у вызова нет формул , только фактические аргументы ... Разница в том, что такая функция, как 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 выше) ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...