English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Funções no R

Uma função é um conjunto de instruções que são executadas juntos para realizar uma tarefa. O R fornece muitas funções integradas, claro, também podemos criar funções ourselves.

Você pode dividir o código em diferentes funções. Como dividir o código em diferentes funções é sua decisão, mas logicamente, a divisão geralmente é feita com base em cada função executar uma tarefa específica. Função

FunçãoDeclaraçãoInforma ao compilador o nome, o tipo de retorno e os parâmetros da função. FunçãoDefiniçãoFornece o corpo real da função.

A função no R é um objeto que pode ter atributos.

Definir função

A definição de função no R usa a palavra-chave function, geralmente na forma如下:

function_name <- function(arg_1, arg_2, ...) {
    // Corpo da função
}

Descrição:

  • function_name  : nome da função

  • arg_1, arg_2, ... : lista de parâmetros formais

O valor de retorno da função usa return().

Funções integradas

O R oferece muitas funções integradas úteis, que podemos usar diretamente sem definição.

Por exemplo: seq(), mean(), max(), sum(x) e paste(...) etc.

# Output  32 até 44 todos os números até
print(seq(32,44))
# Calcular a média de dois números
print(mean(25:82))
# Calcular 41 até 68 A soma de todos os números
print(sum(41:68))

Executar o código acima, o resultado de saída será:

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

Função personalizada

Podemos criar funções ourselves, para funções específicas, definidas, podemos usá-las como funções integradas.

A seguir, mostro como personalizar uma função:

# Definir uma função para contar uma série até o quadrado
new.function <- function(a) {
   for(i in 1:a) {
      b <- i^2
      print(b)
   }
}

A seguir, podemos chamar a função:

new.function <- function(a) {
    for(i in 1:a) {
       b <- i^2
       print(b)
    }
 }
 
# Chamar função e passar parâmetros
new.function(6)

Executar o código acima, o resultado de saída será:

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

Também podemos criar uma função sem parâmetros:

new.function <- function() {
    for(i in 1:5) {
        print(i^2)
    }
}       
 
# Chamar função, não passar parâmetros
new.function()

Executar o código acima, o resultado de saída será:

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

Função com valor de parâmetro

Os parâmetros da função podem ser passados na ordem em que foram criados, ou não, mas precisam especificar o nome do parâmetro:

# Criar função
new.function <- function(a,b,c) {
   result <- a * b + c
   print(result)
}
# Sem nome de parâmetro
new.function(5,3,11)
# Com nome de parâmetro
new.function(a = 11, b = 5, c = 3)

Executar o código acima, o resultado de saída será:

[1] 26
[1] 58

Também podemos especificar valores padrão para os parâmetros ao criar a função, se não passar parâmetros ao chamar, usará o valor padrão:

# Criar função com parâmetros padrão
new.function <- function(a = 3, b = 6) {
   result <- a * b
   print(result)
}
# Chamar função, não passar parâmetros, usará o padrão
new.function()
# Chamar função, passar parâmetros
new.function(9,5)

Executar o código acima, o resultado de saída será:

[1] 18 [1] 45

Funções de Cálculo Perezoso

O cálculo perezoso adia o trabalho de cálculo até que o sistema precise dos resultados desses cálculos. Se não precisar dos resultados, não será necessário calcular.

Por padrão, o cálculo de parâmetros das funções R é perezoso, ou seja, só chamamos ele quando calculamos:

f <- function(x) {
  10
}
f()

Executar o código acima, o resultado de saída será:

[1] 10

O código acima foi executado, mas não houve erro, mesmo que não tenhamos passado parâmetros, pois não usamos o parâmetro x dentro da função, então não chamamos ele e não há erro.

new.function <- function(a, b) {
   print(a^2)
   print(a)
   print(b)  # Usar b, mas não passar, então será emitido um erro
}
# Passar um parâmetro
new.function(6)

Executar o código acima, o resultado de saída será:

[1] 36
[1] 6
Erro em print(b): Falta o parâmetro "b", e não há valor padrão
Chamadas: new.function -> print
Parar Execução