Como chamo a função `function`?
Estou tentando chamar a função`function`
para definir uma função no código R.
Como todos sabemos ™ ,`function`
é um.Primitive
que é usadointernament por R para definir funções quando o usuário usa a sintaxe convencional, ou seja,
mean1 = function (x, ...) base::mean(x, ...)
Mas nada impede que eu chame isso de primitivo diretamente. Ou então eu pensei. Eu posso chamar outras primitivas diretamente (e até redefini-las; por exemplo, em um momento de loucuraEu substituí o R incorpora`for`
). Então, é isso em princípio possível.
No entanto, não consigo fazê-lo funcionar para`function`
. Aqui está o que eu tentei:
# Works
mean2 = as.function(c(formals(mean), quote(mean(x, ...))))
# Works
mean3 = eval(call('function', formals(mean), quote(mean(x, ...))))
# Error: invalid formal argument list for "function"
mean4 = `function`(formals(mean), quote(mean(x, ...)))
O fato de quemean3
em particular obras indica para mim quemean4
devemo trabalhos. Mas isso não acontece. Por quê
Verifiquei a definição do`function`
primitivo na fonte R.do_function
é definido emeval.c
. E vejo que chamaCheckFormals
, o que garante que cada argumento seja um símbolo e isso falhe. Mas por que verifica isso e o que isso significa?
E o mais importante: existe uma maneira de chamar o`function`
primitivo diretamente?
Apenas para esclarecer: existem soluções triviais (esta pergunta lista duas e há pelo menos uma terceira). Mas gostaria de entender como isso funciona (não).