¿Cómo llamo a la función `function`?

Estoy tratando de llamar a la función`function` para definir una función en código R.

Como todos sabemos ™ ,`function`es un.Primitive que se usainternament by R para definir funciones cuando el usuario usa la sintaxis convencional, es decir,

mean1 = function (x, ...) base::mean(x, ...)

Pero no hay nada que me impida llamar a esa primitiva directamente. @O eso pens. Puedo llamar a otros primitivos directamente (e incluso redefinirlos; por ejemplo, en un momento de locuraYo superé a R's incorporado`for`). Así que estoe en principio posible.

Sin embargo, no puedo hacer que funcione para`function`. Esto es lo que probé:

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

El hecho de quemean3 en particular funciona me indica quemean4 deberí trabajo. Pero no lo hace. ¿Por qué

Revisé la definición de`function` primitivo en la fuente R. @do_function se define eneval.c. Y veo que llama aCheckFormals, lo que garantiza que cada argumento sea un símbolo, y esto falla. Pero, ¿por qué verifica esto y qué significa eso?

Y lo más importante: ¿hay alguna forma de llamar a`function` primitivo directamente?

Solo para aclarar: hay soluciones triviales (esta pregunta enumera dos y hay al menos un tercero). Pero me gustaría entender cómo funciona esto (no).

Respuestas a la pregunta(3)

Su respuesta a la pregunta