Como posso obter os formals (argumentos) de um objeto de chamada? formals () parece funcionar apenas com funções.
Respostas:
5 para resposta № 1Bem, uma chamada não ter formals, apenas argumentos reais ... A diferença é que uma função como foo <- function(x, y, ..., z=42)
pode ser chamado com real argumentos como foo(42, bar=13)
.
... Mas conseguir os argumentos pode ser feito assim:
a <- call("foo", a=42, 13)
as.list(a)[-1]
#$a
#[1] 42
#
#[[2]]
#[1] 13
... por outro lado, você pode normalmente (nem sempre) encontrar a função real e encontrar os formulários para ela:
a <- quote(which(letters=="g"))
formals(match.fun(a[[1]]))
#$x
#
#$arr.ind
#[1] FALSE
#
#$useNames
#[1] TRUE
Aqui você precisa adicionar algum tratamento de erro se a função não puder ser encontrada (como na chamada para foo
acima)...