functions - pasando varios argumentos a FUN of lapply(y otros*se aplican)
mapply in r (3)
Puedes hacerlo de la siguiente manera:
myfxn <- function(var1,var2,var3){
var1*var2*var3
}
lapply(1:3,myfxn,var2=2,var3=100)
y obtendrás la respuesta:
[[1]] [1] 200
[[2]] [1] 400
[[3]] [1] 600
(esta debe ser una pregunta muy básica, pero hasta ahora no he podido encontrar una respuesta en los manuales R ...)
cuando uso lapply con la sintaxis de lapply(input, myfun);
- esto es fácilmente comprensible, y puedo definir mi diversión así:
myfun <- function(x) {
# doing something here with x
}
lapply(input, myfun);
y los elementos de input
se pasan como argumento x
a myfun
.
¿Pero qué pasa si necesito pasar algunos argumentos más a mi función? Por ejemplo, se define así:
myfun <- function(x, arg1) {
# doing something here with x and arg1
}
¿Cómo puedo usar esta función para pasar ambos elementos de input
(como argumento x
) y algún otro argumento?
Según lo sugerido por Alan, la función ''mapply'' aplica una función a múltiples listas múltiples o argumentos vectoriales:
mapply(myfun, arg1, arg2)
Consulte la página del manual: https://stat.ethz.ch/R-manual/R-devel/library/base/html/mapply.html
Si busca la página de ayuda, uno de los argumentos para el lapply
es el misterioso ...
Cuando miramos la sección Argumentos de la página de ayuda, encontramos la siguiente línea:
...: optional arguments to ‘FUN’.
Así que todo lo que tiene que hacer es incluir su otro argumento en la llamada lapply
como un argumento, así:
lapply(input, myfun, arg1=6)
y a la lapply
, reconociendo que arg1
no es un argumento con el que sabe qué hacer, se lo pasará automáticamente a myfun
. Todas las demás funciones de apply
pueden hacer lo mismo.
Un apéndice: puede usar ...
cuando esté escribiendo sus propias funciones, también. Por ejemplo, supongamos que escribe una función que llama a plot
en algún punto y desea poder cambiar los parámetros de plot desde su llamada a función. Podría incluir cada parámetro como un argumento en su función, pero eso es molesto. En su lugar, puede usar ...
(como un argumento tanto para su función como para la llamada a trazar dentro de ella), y cualquier argumento que su función no reconozca se pasará automáticamente a plot
.