/ / R - obter formals do objeto de chamada - r

R - obtém formals do objeto de chamada - r

Como posso obter os formals (argumentos) de um objeto de chamada? formals () parece funcionar apenas com funções.

Respostas:

5 para resposta № 1

Bem, 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)...