¿Dónde puedo encontrar documentación sobre el uso de ...
funciones in? Serían útiles ejemplos.
¿Dónde puedo encontrar documentación sobre el uso de ...
funciones in? Serían útiles ejemplos.
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?
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).
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 de sapply
función.
(tenga en cuenta que este ejemplo es trivial, puede usarlo sapply(mtcars, median)
para lograr el mismo resultado)
trim
es un argumento de la mean
función. Los ...
in sapply
son el mecanismo al trim
que se le pasará mean
.
...
es el equivalente de R entrada de palabras clave de Python (def func(**kwargs)
)