R - Funções

Uma função é um conjunto de instruções organizadas em conjunto para realizar uma tarefa específica. R tem um grande número de funções embutidas e o usuário pode criar suas próprias funções.

Em R, uma função é um objeto para que o interpretador de R seja capaz de passar o controle para a função, junto com os argumentos que podem ser necessários para a função realizar as ações.

A função, por sua vez, executa sua tarefa e retorna o controle ao interpretador, bem como qualquer resultado que possa ser armazenado em outros objetos.

Definição de Função

Uma função R é criada usando a palavra-chave function. A sintaxe básica de uma definição de função R é a seguinte -

function_name <- function(arg_1, arg_2, ...) {
   Function body 
}

Componentes de Função

As diferentes partes de uma função são -

  • Function Name- Este é o nome real da função. Ele é armazenado no ambiente R como um objeto com este nome.

  • Arguments- Um argumento é um espaço reservado. Quando uma função é chamada, você passa um valor para o argumento. Os argumentos são opcionais; ou seja, uma função não pode conter argumentos. Além disso, os argumentos podem ter valores padrão.

  • Function Body - O corpo da função contém uma coleção de instruções que definem o que a função faz.

  • Return Value - O valor de retorno de uma função é a última expressão no corpo da função a ser avaliada.

R tem muitos in-builtfunções que podem ser chamadas diretamente no programa sem defini-las primeiro. Também podemos criar e usar nossas próprias funções, chamadas deuser defined funções.

Função Integrada

Exemplos simples de funções embutidas são seq(), mean(), max(), sum(x) e paste(...)etc. Eles são chamados diretamente por programas escritos pelo usuário. Você pode consultar as funções R mais utilizadas.

# Create a sequence of numbers from 32 to 44.
print(seq(32,44))

# Find mean of numbers from 25 to 82.
print(mean(25:82))

# Find sum of numbers frm 41 to 68.
print(sum(41:68))

Quando executamos o código acima, ele produz o seguinte resultado -

[1] 32 33 34 35 36 37 38 39 40 41 42 43 44
[1] 53.5
[1] 1526

Função definida pelo usuário

Podemos criar funções definidas pelo usuário em R. Elas são específicas para o que o usuário deseja e, uma vez criadas, podem ser usadas como as funções integradas. Abaixo está um exemplo de como uma função é criada e usada.

# Create a function to print squares of numbers in sequence.
new.function <- function(a) {
   for(i in 1:a) {
      b <- i^2
      print(b)
   }
}

Chamando uma função

# Create a function to print squares of numbers in sequence.
new.function <- function(a) {
   for(i in 1:a) {
      b <- i^2
      print(b)
   }
}

# Call the function new.function supplying 6 as an argument.
new.function(6)

Quando executamos o código acima, ele produz o seguinte resultado -

[1] 1
[1] 4
[1] 9
[1] 16
[1] 25
[1] 36

Chamando uma função sem um argumento

# Create a function without an argument.
new.function <- function() {
   for(i in 1:5) {
      print(i^2)
   }
}	

# Call the function without supplying an argument.
new.function()

Quando executamos o código acima, ele produz o seguinte resultado -

[1] 1
[1] 4
[1] 9
[1] 16
[1] 25

Chamando uma função com valores de argumento (por posição e por nome)

Os argumentos para uma chamada de função podem ser fornecidos na mesma sequência definida na função ou podem ser fornecidos em uma sequência diferente, mas atribuídos aos nomes dos argumentos.

# Create a function with arguments.
new.function <- function(a,b,c) {
   result <- a * b + c
   print(result)
}

# Call the function by position of arguments.
new.function(5,3,11)

# Call the function by names of the arguments.
new.function(a = 11, b = 5, c = 3)

Quando executamos o código acima, ele produz o seguinte resultado -

[1] 26
[1] 58

Chamando uma função com argumento padrão

Podemos definir o valor dos argumentos na definição da função e chamar a função sem fornecer nenhum argumento para obter o resultado padrão. Mas também podemos chamar essas funções, fornecendo novos valores do argumento e obter um resultado não padrão.

# Create a function with arguments.
new.function <- function(a = 3, b = 6) {
   result <- a * b
   print(result)
}

# Call the function without giving any argument.
new.function()

# Call the function with giving new values of the argument.
new.function(9,5)

Quando executamos o código acima, ele produz o seguinte resultado -

[1] 18
[1] 45

Avaliação Preguiçosa da Função

Os argumentos das funções são avaliados lentamente, o que significa que são avaliados apenas quando necessários para o corpo da função.

# Create a function with arguments.
new.function <- function(a, b) {
   print(a^2)
   print(a)
   print(b)
}

# Evaluate the function without supplying one of the arguments.
new.function(6)

Quando executamos o código acima, ele produz o seguinte resultado -

[1] 36
[1] 6
Error in print(b) : argument "b" is missing, with no default