= function(argumentos){
nome_funcao # conjunto de comandos que
# serão realizados
}
7 Funções
Uma das principais vantagens dos softwares estatísticos, como o R, reside na sua capacidade de criar e manipular funções de forma simples e eficiente.
Uma função pode ser entendida como uma série de instruções que você deseja que o programa execute. Se você utiliza frequentemente uma determinada sequência de comandos, em vez de reescrevê-los repetidamente, é mais prático criar uma função para automatizar esse processo.
Ao utilizar um pacote no R, na realidade estamos aproveitando as funções previamente criadas por outros desenvolvedores.
Quando criamos uma função, é fundamental definir claramente suas entradas (argumentos) e saídas (resultados a serem retornados).
Para criar uma função no R, utilizamos a estrutura básica da função function
, conforme exemplificado abaixo:
Vamos exemplificar criando uma função que exiba a mensagem “Viciados no R!” sempre que for chamada:
#Criando a função e chamando de mensagem
= function(){
mensagem print("Mensagem do além!")
}
#evocando a função
mensagem()
[1] "Mensagem do além!"
A função que definimos anteriormente não possui argumentos, como demonstrado com a função getwd()
.
Agora, vamos considerar a criação de uma função que calcule e retorne a soma de dois números.
#Criando uma função que soma dois números
= function(x,y){
minha_soma = x + y
valor return(valor)
}
minha_soma(x = 2, y = 4)
[1] 6
O que ocorre se, ao invés de somar dois números, tentarmos somar um número a uma letra?
minha_soma(x = 2, y = "h")
Nossa função resultará em um erro, porém, esse erro não foi especificamente detalhado. Podemos aprimorar a função aplicando os condicionamentos que estudamos anteriormente.
#Melhorando a função
= function(x,y){
minha_soma if(class(x) != "numeric" | !is.numeric(y)){
print("Você deve inserir dois números para que a função possa ser executada!")
else{
}= x + y
valor return(valor)
}
}
minha_soma(x = 2, y = "h")
[1] "Você deve inserir dois números para que a função possa ser executada!"
minha_soma(x = "h", y = 2)
[1] "Você deve inserir dois números para que a função possa ser executada!"
minha_soma(x = 2, y = 4)
[1] 6
class(x) != “numeric” e !is.numeric(y) são duas formas distintas de perguntar se um objeto é um número no R.
Também é possível pré-definir alguns argumentos nas nossas funções.
#Criando uma função que calcula a potência de um número (a priori o número 10)
= function(x,base = 10){
potencia = base^x
valor return(valor)
}
#Calculando 10^3
potencia(x = 3)
[1] 1000
#Calculando 5^3
potencia(x = 3, base = 5)
[1] 125
Atividade: Crie uma função que calcula o valor de \(f(z)=3e^{−3z},z>0\). A função deve se chamar f.
Vamos plotar a função f(z) no intervalo de 0 a 3.
#Ativando pacotes
library(ggplot2)
library(tibble)
#Plotando o gráfico
ggplot(data = tibble(z = c(0,3)),
mapping = aes(x = z)) +
stat_function(fun = f) +
labs(y = "f(z)")
Para visualizarmos a função criada, utilizamos o geom_stat_function
para plotar uma função específica. Observa-se que empregamos o recurso de criar um tibble no ggplot com uma única variável contendo dois valores: o mínimo e o máximo do eixo x. Estes valores delimitam a região na qual desejamos realizar o plot.