Funções em R

Não lembrava que já tinha feito um post sobre funções em R e acabei escrevendo mais este aqui (já aconteceu outras vezes rs). Como já estava pronto, não tinha motivos para deletar. Deixo aqui então um post que serve de complemento ao Funções no R.

Uma das maiores vantagens da maioria dos softwares estatísticos é o poder de criar funções. Uma função é apenas uma sequência de passos que você quer que o programa execute. Se você faz uso de uma sequência de passos repetidamente, ao invés de ter que reescrever os passos todas as vezes, você simplesmente cria uma função. Quando você faz uso de um pacote, na verdade você está se aproveitando de funções que outras pessoas já criaram.

Para criar uma função em R, você só precisa utilizar o function seguido de chaves:

funcao.nome = function{
<sequencia de passos>
}

Vamos supor que você queira criar uma função que retorne a mensagem “Oi” toda vez que for evocada:

funcao.oi = function{
print ("Oi!")
}

Agora, toda vez que alguém digitar funcao.oi a mensagem “Oi!” aparecerá. Para executar é simples, precisa apenas digitar o nome da função:

funcao.oi()
[1] "Oi!"

É claro que o exemplo acima é pouco útil. Mesmo que tenhamos alguma função mais complexa dentre as chaves, o interessante é ter uma função que varie de acordo com o valor que o usuário escolhe. Para isso, é preciso colocar entre parênteses os argumentos da função e utilizar o comando return() antes de fechar as chaves. Por exemplo, se quisermos fazer uma função que retorne o quadrado de um número inserido pelo usuário utilizaríamos o seguinte script:

funcao.quadrado = function(x){
quadrado = x*x
return (quadrado)
}

Agora o comando funcao.quadrado(10) faz com que o R retorne o valor 100.

funcao.quadrado(10)
[1] 100

Poderíamos ter uma função que recebesse dois argumentos e retornasse a soma deles:

funcao.soma = function(a,b){
soma = a+b
return (soma)
}

Com isso, funcao.soma(10,20) retornaria 30.

Caso quiséssemos a multiplicação:

funcao.mult = function(a,b){
mult = a*b
return (mult)
}

Importante notar que o nome “funcao.xyz” é apenas uma escolha para facilitar a leitura do código. Poderíamos ter nomes diferentes sem nenhum problema:

multiplicacao = function(a,b){
multiplicacao = a*b
return (multiplicacao )
}

A única diferença é que agora você conseguiria obter a multiplicação de 10 por 5 com o comando multiplicacao(10,5).

No exemplo a seguir, uma mensagem é enviada se o argumento não for do tipo numérico:

funcao.quadrado = function(x){
  if (class(x) != "numeric"){
  print("Vc deve inserir um numero")
  }
  else
  return(x*2)
}

Veja que se o usuário fizer algo como funcao.quadrado(“bolacha”) ele receberá a mensagem de que ele deve inserir um número. Já no caso do comando funcao.quadrado(10) é retornado o valor 100.

Agora vem a parte mais interessante: é possível chamar uma função que está em outro script!

Ou seja, sua função function.quadrado() pode ter sido escrita originalmente em um programa X e mesmo assim ser utilizada em um programa Y. Suponha que você tenha criado todas as funções acima no programa funcoes.r. Quando você começar um novo script e quiser fazer uso de todas elas, utilize source().

O exemplo abaixo faz uso das funções criadas no código funcoes.r e retorna o valor 100:

source("C:/Yukio/Desktop/funcoes.r");
funcao.quadrado(10)
E aí, curtiu o post?

E aí? Gostou do conteúdo? Se inscreva para receber todas as novidades. Deixe seu e-mail em INSCREVA-SE na barra à direita, logo abaixo de pesquisar. E, por favor, não deixe de comentar, dar seu feedback e, principalmente, compartilhar com seus amigos. De verdade, isso faz toda a diferença. Além disso, você também pode acompanhar mais do meu trabalho seguindo a conta de Twitter @UniDosDados, no Instagram @universidadedosdados ou por alguma das redes que você encontra em Sobre o Estatsite / Contato, como meu canal de Youtube Canal Universidade dos Dados.

Aproveite e adquira sua camiseta de data science na LOJA DA UNIVERSIDADE DOS DADOS. Vai ficar estiloso e me ajudar neste projeto!

BONS ESTUDOS!

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *