# Function R: O que é e como criar uma função R

A linguagem de programação R é usada em diversas áreas que executam análises de dados e estatísticas. Entre os conceitos mais importantes da programação em R está a função R (*function R*). Ela pode ajudar você a deixar o seu **código limpo e modular**.

## Quando usar *functions in R*?

A chamada *function R* ou, em português, função R, é usada para estruturar, organizar ou reutilizar um código. Em especial, ela é capaz de desempenhar análises complexas e processar dados em larga escala, além de também poder ser usada para criar análises personalizadas. Ademais, estes são os benefícios de se criar ou utilizar *funtions in R*:

- **Abstração**: Uma função R permite o encapsulamento de processos e de cálculos complexos, em uma interface única e de fácil entendimento. Assim, ela facilita tanto a manutenção quanto a leitura de um código.
- **Reutilização**: Uma função R possibilita a execução de blocos de código específicos repetidamente, sem que estes precisem ser reescritos múltiplas vezes. Dessa forma, uma *funcion R* ajuda a economizar tempo e reduz possibilidades de erros.
- **Modularidade**: Com uma função R, você consegue dividir um projeto grande em partes menores, facilitando a administração do mesmo.

## Sintaxe de *functions in R*

A estrutura de funções R costuma ser consistente, **seguindo um padrão claro**. Uma função R possui os seguintes componentes principais:

- **Nome da função**: Costuma indicar a tarefa a ser desempenhada.
- **Argumentos**: Variáveis ou valores transmitidos à função e processados por ela. Uma função pode ter vários argumentos ou não conter argumento nenhum. Também é possível utilizar valores padrão para funções R.
- **Corpo da função**: Contém o código a ser executado por ela, a ser escrito entre chaves. Um código é capaz de acessar e processar argumentos.
- **Valor de retorno**: A maioria das funções R faz uso de `return()` para retornar o valor que representa o resultado de um cálculo. Um valor de retorno pode ser usado para aplicar o resultado de uma função a outras partes de um código.

Acompanhe, abaixo, um exemplo simples de uma *function R* criada para somar dois números:

```R
my_add <- function(a, b) {
    result <- a + b
    return(result)
}
```

No código acima, `my_add` é o nome da função, já `a` e `b` são os argumentos. O corpo da função executa a adição e `return(result)` retorna o resultado. Por fim, a definição da função R é apresentada pela palavra-chave `function`.

Uma função também pode conter **argumentos com valores predefinidos**, a serem usados quando nenhum outro argumento é informado. Valores padrão para a função R apresentada acima seriam os seguintes:

```R
my_add <- function(a = 1, b = 2) {
    result <- a + b
    return(result)
}
```

Assim, se a função for chamada sem que nenhum argumento seja informado, esta retornará o valor `3`.

Dica Se você quer publicar o seu projeto R na internet, pode alugar um espaço web próprio no [Webspace](https://www.ionos.com/hosting/webspace "Webspace — IONOS") da IONOS. Ele oferece capacidade suficiente para todo tipo de projeto.

## *Functions in R* pré-instaladas

A linguagem de programação R tem uma **ampla coleção de funções pré-instaladas**. Estas são chamadas de [comandos R](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/commands-in-r/) e podem ser usadas para as mais diversas finalidades. Em alguns casos, funções R também podem ser desempenhadas por [operadores R](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/operator-in-r/). Quando isso ocorre, elas são substituídas pelo operador `+`.

A menos que você esteja somente [começando a aprender sobre programação](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/aprender-programacao-introducao-basica/), já deverá estar familiarizado com algumas das funções abaixo:

- `mean()`: Calcula a média dos números
- `plot()`: Função plot R (*r function plot*) que cria gráficos e tabelas
- `read.csv()`: Lê dados de um arquivo CSV
- `toupper()`: Converte todos os caracteres de uma [R string](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/r-string/ "R string") em caracteres maiúsculos
- `sum()`: Calcula a soma dos números
- `print()`: Apresenta valores no console

Observe, abaixo, exemplo de como fazer uso da *function R*`mean`, pré-instalada. A variável `result`, presente no final do código, apresenta a média de todos os números do [vetor R](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/r-vector/) `numbers`.

```R
numbers <- c(2, 4, 6, 8, 10)
result <- mean(numbers)
```

## Como criar *functions in R*?

**Criar funções R próprias é parte fundamental da programação em R**, uma vez que suas criações serão especificamente adaptadas às suas necessidades. Para escrever uma *function R*, basta que você compreenda a sintaxe dessa linguagem e defina os argumentos corretamente.

Observe, abaixo, um exemplo de função R personalizada simples, programada para retornar o valor de um número:

```R
my_abs <- function(x) {
    if (x < 0) {
        return(-x)
    } else {
        return(x)
    }
}
```

A função R apresentada acima leva em consideração o argumento `x`. No corpo dela, a declaração `if` verifica se o número é positivo ou negativo. O valor retornado é, então, devidamente ajustado.

## Como usar uma *function R* própria?

Após criar uma função, adicione-a ao seu código em R. Para tanto, chame seu nome e informe os argumentos necessários. O uso de uma função R própria não difere do uso de uma função R pré-definida.

Aqui, colocamos em uso da função `my_abs` que acabamos de criar:

```R
result <- my_abs(-5)
print(result)
```

Ao executarmos o código do exemplo, o resultado `5` será apresentado. Ele prova que o cálculo do valor absoluto feito pela função está correto.


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/function-r/](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/function-r/) for AI/LLM consumption.