Aplicar función con múltiples argumentos en R
Las funciones son esenciales en cualquier lenguaje de programación. Una función es un bloque de código que puede ser llamado para realizar una operación específica en la programación.
En R, tenemos funciones incorporadas así como funciones definidas por el usuario. También podemos aplicar una función directamente a una lista o vector con uno o varios argumentos.
En este tutorial trabajaremos con los siguientes vectores y función:
f1 <- function(v1,v2){
v1+v2
}
vec1 <- c(1,5,9)
vec2 <- c(2,7,6)
La función es relativamente sencilla, sólo suma dos elementos y tenemos dos vectores con tres elementos cada uno.
En este tutorial, trabajaremos con las funciones sapply()
, lapply()
, y la función mapply()
, donde aplicaremos una función a todo el vector y pasaremos múltiples parámetros a la misma, y pasaremos los vectores a la función como parámetros.
En situaciones en las que queramos aplicar una función a un vector o lista dados, podemos utilizar lapply()
o sapply()
.
La función lapply()
devuelve una lista como resultado final. Por ejemplo:
lapply(vec1,f1,5)
[[1]]
[1] 6
[[2]]
[1] 10
[[3]]
[1] 14
typeof(lapply(vec1,f1,5))
[1] "list"
Como puedes ver, pasamos la función f1
a vec1 y pasamos otro argumento 5, ya que la función toma dos argumentos, que simplemente suma 5 a todos los elementos.
La función sapply()
realiza la misma función que la función lapply()
pero se considera más eficiente de las dos ya que simplifica la salida y el resultado no es necesariamente una lista.
El siguiente fragmento de código muestra cómo hacerlo:
sapply(vec1,f1,5)
[1] 6 10 14
typeof(sapply(vec1,f1,5))
[1] "double"
Otra función interesante disponible es mapply()
. Aplica una función a los vectores que se pasan como argumentos. La función se aplica a los primeros elementos de los vectores, a los segundos, y así sucesivamente.
mapply(f1,vec1,vec2)
[1] 3 12 15
Observa que con la función mapply()
podemos pasar los vectores como argumentos múltiples a una función, ya que devuelve la suma de los elementos en la misma posición.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn