Para los usuarios de Python aprender R, una respuesta rápida sería que ...es el equivalente de R entrada de palabras clave de Python ( def func(**kwargs))
En realidad, el nombre oficial en R es dots, por ejemplo, se nombra la página de ayuda ?dotsy la "puntos suspensivos" ni siquiera se menciona en la página
MichaelChirico
En cuanto a los archivos de ayuda, ?dotsno me funciona, pero ?'...'sí.
La función, falmacena todo menos el primer argumento de entrada en la variable de puntos suspensivos. Para acceder a su contenido, es más fácil convertirlo en una lista (1). Sin embargo, el uso principal es pasar argumentos a subfunciones, lo que no requiere conversión (2).
¿Por qué en el n. ° 2 volver a llamar a la misma función f?
Jiapeng Zhang
1
@JiapengZhang Es un ejemplo de función recursiva. f()se llama repetidamente con diferentes argumentos cada vez. Ejecute el código y vea si puede comprender lo que está sucediendo.
Richie Cotton
2
Esto sería un gran ejemplo para demostrar ...length()así
MichaelChirico
19
Debe dirigirse a "Definición del lenguaje R", sección 2.1.9 Punto-punto-punto . Viene incluido con la instalación R. Ejecute help.start()una sesión interactiva para que aparezca la ayuda HTML y haga clic en el enlace Definición del lenguaje R. También puede utilizar la versión PDF o HTML del sitio principal.
De todos modos, ...se usa para hacer coincidir argumentos formales no especificados de una función.
args(sapply)
function (X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)
NULL
sapply(mtcars, mean, trim = .5)
mpg cyl disp hp drat wt qsec vs am gear
19.2006.000196.300123.0003.6953.32517.7100.0000.0004.000
carb
2.000
Como puede ver, pasé trim = .5aunque no está especificado como un argumento formal de sapplyfunción.
(tenga en cuenta que este ejemplo es trivial, puede usarlo sapply(mtcars, median)para lograr el mismo resultado)
...
es el equivalente de R entrada de palabras clave de Python (def func(**kwargs)
)Respuestas:
La palabra que se usa para describir
...
es "puntos suspensivos". Saber esto debería facilitar la búsqueda de información sobre el constructo. Por ejemplo, el primer resultado en Google es otra pregunta en este sitio: ¿Cómo usar la función de puntos suspensivos de R al escribir su propia función?fuente
dots
, por ejemplo, se nombra la página de ayuda?dots
y la "puntos suspensivos" ni siquiera se menciona en la página?dots
no me funciona, pero?'...'
sí.Un pequeño ejemplo para empezar.
f <- function(x, ...) { dots <- list(...) #1 if(length(dots) == 0) return(NULL) cat("The arguments in ... are\n") print(dots) f(...) #2 } f(1,2,3,"a", list("monkey"))
La función,
f
almacena todo menos el primer argumento de entrada en la variable de puntos suspensivos. Para acceder a su contenido, es más fácil convertirlo en una lista (1). Sin embargo, el uso principal es pasar argumentos a subfunciones, lo que no requiere conversión (2).fuente
f()
se llama repetidamente con diferentes argumentos cada vez. Ejecute el código y vea si puede comprender lo que está sucediendo....length()
asíDebe dirigirse a "Definición del lenguaje R", sección 2.1.9 Punto-punto-punto . Viene incluido con la instalación R. Ejecute
help.start()
una sesión interactiva para que aparezca la ayuda HTML y haga clic en el enlace Definición del lenguaje R. También puede utilizar la versión PDF o HTML del sitio principal.De todos modos,
...
se usa para hacer coincidir argumentos formales no especificados de una función.args(sapply) function (X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE) NULL sapply(mtcars, mean, trim = .5) mpg cyl disp hp drat wt qsec vs am gear 19.200 6.000 196.300 123.000 3.695 3.325 17.710 0.000 0.000 4.000 carb 2.000
Como puede ver, pasé
trim = .5
aunque no está especificado como un argumento formal desapply
función.(tenga en cuenta que este ejemplo es trivial, puede usarlo
sapply(mtcars, median)
para lograr el mismo resultado)fuente
trim
es un argumento de lamean
función. Los...
insapply
son el mecanismo altrim
que se le pasarámean
.