domingo, 2 de abril de 2017

Criando funções

Já definimos o conceito de variável (vide postagem O conceito de variável).

Funções são instruções que executarão alguma ação e podem ou não retornar algum resultado.

Um exemplo de função bem simples é a função quit() do R, que finaliza o programa. Quando chamada essa função, a instrução que ela executa é de finalizar o R. Podemos ter também que nos retorna algum resultado, por exemplo uma função que recebe dois números e retorna a soma deles. Vamos criar essa função.
Para criar qualquer função no R, temos a seguinte sintaxe:

     nome_da_funcao = function(arg1, arg2, ...) {
        instruções
        return(objeto)
     }

Em que:
nome_da_funcao é o nome da função (você escolhe),
arg1, arg2, ... são argumentos que serão passados para a função,
instruções são os comandos que a função irá executar,
return() é a função que indica o retorno da função, pára a execução da função e retorna o objeto.

Abra um novo script e escreva:


Explicando: o nome da função é calcula.soma. Essa função recebe dois números, num1 e num2. A soma dos dois números é atribuída à variável local soma e então a função retorna essa variável. É importante dizer que uma função no R também é um objeto. Selecione a função e execute, assim o R será capaz de reconhecer a função. Em seguida, teste:


IMPORTANTE: variáveis globais são variáveis acessíveis em qualquer nível de programação e variáveis locais são variáveis declaradas dentro de uma função e são reconhecidas somente dentro dela. 
No nosso exemplo, soma é uma variável local, isto é, existe somente dentro da função calcula.soma. Se você tentar acessá-la de fora da função, o R não reconhece. 


O uso de funções é bastante útil, uma vez que linhas e linhas de código podem ser poupadas utilizando funções. Esse é o conceito básico de funções e como criá-las no ambiente R. 
Até a próxima =D

domingo, 17 de janeiro de 2016

Identificar e obter coordenadas de um ponto em gráficos

Quando estamos trabalhando com gráficos, também chamados de plot, podemos estar interessados em duas coisas em específico:

  1. Identificar pontos no gráfico,
  2. Saber quais são as coordenadas de determinado ponto.

Como justificativa para (1), podemos citar, por exemplo, a análise de resíduos de uma regressão comum, em que queremos identificar as observações que são outliers (quando há). Para (2), suponha que desejamos conhecer as coordenadas (aproximadas) de um ponto na curva para a qual muda de comportamento.
Temos uma função para cada objetivo acima, que são bastante úteis, e veremos a seguir.

A função identify ()


Primeiramente, precisamos saber se a identificação do ponto se dará por número ou se temos nomes para as observações. No nosso exemplo, criamos aleatoriamente 10 pontos (coordenadas inteiras) no quadrado [0,10]x[0,10]. Queremos identificá-los por 'a', 'b', 'c' e assim por diante. Foi criado o vetor com os nomes (ou labels) dos pontos, como vemos na figura abaixo.


Obtemos as seguintes coordenadas que foram plotadas:


Para identificar os pontos no gráfico, usamos a função identify(). Sua sintaxe é:
identify( x , y , labels , n,...)
Em que:
x e y são os vetores correspondentes às coordenadas do ponto,
labels é o vetor contendo o nome dos pontos (caso contrário, o ponto será identificado como sua posição no vetor de coordenadas),
n é o número de pontos que se deseja identificar.
... são atributos opcionais.

Quando se executa essa função, devemos clicar no ponto a ser identificado. Se você clicar em uma região que não há pontos próximos, uma mensagem de aviso será exibida.
Para este exemplo, identificamos quatro pontos:

E o gráfico:


A função locator()


Para obter as coordenadas de um ponto de um gráfico, usamos a função locator() que tem como sintaxe:

locator(n,...)

Em que:
n é o número de pontos cujas coordenadas se deseja obter.
... são atributos opcionais.

Quando se executa essa função, devemos clicar no ponto do gráfico que queremos a localização.
No nosso exemplo, obtemos a localização de quatro pontos (os mesmos pontos identificados no exemplo anterior). 


Note que, como temos que clicar, não teremos as coordenadas exatas dos pontos. Mesmo assim, obtivemos excelentes aproximações dos pontos reais.

Espero que tenha ajudado.
Até a próxima.


quinta-feira, 17 de outubro de 2013

A função Plot () - Parte I

A função plot desenha um ponto, ou um conjunto de pontos, em um eixo coordenado. Em outras palavras, desenha gráficos.
A estrutura básica da função é:
plot(x, y, ...)

Em que:
 x e y são vetores de pontos correspondentes ao eixo x e ao eixo y, respectivamente.
... são atributos opcionais.

Vamos à prática:
Queremos plotar o ponto (2,3) no plano cartesiano. Para isso, basta digitarmos plot(2,3). Veja o resultado:

Agora queremos plotar vários pontos no plano cartesiano. Lembre-se que x é o vetor de coordenadas do eixo x e y, o do eixo y. Desse modo:






x<-c(1,2,3,4,5,6,7,8,9,10)
y<-c(1,5,-2,3,9,9,9,-4,2,0)
plot(x,y)








Agora, vamos explorar um pouco os atributos da função plot:

main: título do gráfico;
sub: subtítulo do gráfico;
xlab: nome para o eixo x;
ylab: nome para o eixo y.

Note que os valores para cada atributo acima é uma cadeia de caracteres. Para o exemplo anterior, suponha que os pontos que plotamos sejam as notas dos alunos (y) para cada aluno (x), somente para a disciplina de biologia. Então, usando os atributos acima, vemos o seguinte resultado:

plot(x,y, main='Notas dos alunos',  sub='Disciplina: biologia', xlab='Aluno', ylab='Nota')


Note que o subtítulo fica exatamente embaixo do gráfico.

Até agora plotamos apenas pontos. O atributo type nos permite escolher o tipo de plotagem, por exemplo, pontos ou linha. Seus valores são:

p: pontos
l: linhas
b: pontos e linhas
c: apenas as linhas da plotagem 'b'
o: pontos e linhas sobrepostos
h: linhas de histograma (verticais)
s: para escada
n: sem plotagem

Note que, se quisermos plotar apenas os eixos, sem plotar nenhum ponto ou linha, usaremos type='n'. Pode não fazer sentido agora, mas em outras postagens mostrarei o quão útil é esse valor do atributo type.

Ainda com os pontos do exemplo anterior, façamos:

plot(x,y, main='Notas dos alunos',  sub='Disciplina: biologia', xlab='Aluno', ylab='Nota', type='l')



plot(x,y, main='Notas dos alunos',  sub='Disciplina: biologia', xlab='Aluno', ylab='Nota', type='o')


plot(x,y, main='Notas dos alunos',  sub='Disciplina: biologia', xlab='Aluno', ylab='Nota', type='h')


Note que o tipo 'h' retorna a linha que liga o ponto até o zero do eixo y.  Os demais atributos deixo a vocês experimentarem.

Na próxima postagem, falarei um pouco sobre funções. Vamos começar a programar em alto nível agora!