Aplicar a função com múltiplos argumentos em R

As funções são essenciais em qualquer linguagem de programação. Uma função é um bloco de código que pode ser chamado para realizar uma operação específica na programação.

Em R, temos funções incorporadas, bem como funções definidas pelo utilizador. Podemos também aplicar uma função directamente a uma lista ou vector com um ou vários argumentos.

Neste tutorial iremos trabalhar com os seguintes vectores e funções:

f1 <- function(v1,v2){
  v1+v2
}
vec1 <- c(1,5,9)
vec2 <- c(2,7,6)

A função é relativamente simples, apenas acrescenta dois elementos e temos dois vectores com três elementos cada um.

Neste tutorial, trabalharemos com sapply(), lapply(), e as funções mapply(), onde aplicaremos uma função a todo o vector e passaremos múltiplos parâmetros ao mesmo, e passaremos os vectores para a função como parâmetros.

Em situações em que queremos aplicar uma função a um determinado vector ou lista, podemos utilizar lapply(), ou sapply().

A função lapply() devolve uma lista como a saída final. Por exemplo, a função lapply() devolve uma lista como resultado final:

lapply(vec1,f1,5)
[[1]]
[1] 6

[[2]]
[1] 10

[[3]]
[1] 14
typeof(lapply(vec1,f1,5))
[1] "list"

Como pode ver, passamos a função f1 para vec1 e passamos outro argumento 5, uma vez que a função leva dois argumentos, que simplesmente adiciona 5 a todos os elementos.

A função sapply() executa a mesma função que a função lapply() mas é considerada mais eficiente das duas, uma vez que simplifica a saída e o resultado não é necessariamente uma lista.

O seguinte trecho de código mostra como:

sapply(vec1,f1,5)
[1]  6 10 14
typeof(sapply(vec1,f1,5))
[1] "double"

Outra função interessante disponível é a função mapply(). Ela aplica uma função a vectores que são passados como argumentos. A função é aplicada aos primeiros elementos dos vectores, aos segundos elementos, e assim por diante.

mapply(f1,vec1,vec2)
[1]  3 12 15

Note que com a função mapply() somos capazes de passar os vectores como argumentos múltiplos a uma função, uma vez que devolve a soma dos elementos na mesma posição.

Artigo relacionado - R Function

  • replicate() função em R