Funções em R

Não lembrava que já tinha feito um post sobre funções em R e acabei escrevendo este. 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:

fucao.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)
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s