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

questionAnswers(3)

yourAnswerToTheQuestion