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!





segunda-feira, 23 de setembro de 2013

Resumindo o básico

Vimos alguns conceitos e comandos básicos até agora, por isso detalhei o que fizemos. Antes de começarmos a programar de verdade, vou fazer um esquema dos conceitos e comandos vistos:

Variáveis são objetos que armazenam informações temporárias.

Um script é uma sequência de passos (comandos) a serem executados e interpretados.


ESTRUTURA DE CONDIÇÃO


ifelse
ifelse(condição, valor se a condição é verdadeira, valor se a condição é falsa)
if... else...
if(condição){
bloco de comandos
}else if(condição){
bloco de comandos
}else{
bloco de comandos
}

ESTRUTURAS DE REPETIÇÃO (LOOPS)


for
for(var_ind in sequencia){
bloco de comandos
}
while
while(condição){
bloco de comandos
}

domingo, 22 de setembro de 2013

Loops

As estruturas de repetição (loops) são bastante eficientes, pois possibilita a execução de comandos repetidas vezes.
Imagine que você fez uma pesquisa sobre o que as pessoas pensavam sobre o 'amor' em uma palavra e que agora você tenha esse resultado em um vetor. Agora, você quer saber se alguma pessoa pensa que o amor é 'vida'.
Suponha o seguinte vetor de resultados:
respostas<- c('calor','dinheiro','mãe','carro','família','internet','música',                                   'dinheiro','dinheiro','vida','comida')
Vejamos que temos apenas 11 respostas, armazenadas no vetor respostas. Para esse caso é simples: olhando as respostas sabemos que uma pessoa respondeu 'vida'. Mas imagine um vetor com mais de mil respostas, ficaria complicado de olhar uma a uma não?
Para verificar se há a resposta 'vida', temos que olhar o valor de cada posição do vetor respostas e compará-lo com a string 'vida'.

Uma string é uma cadeia de caracteres.

Para fazer isso, podemos escrever um comando de comparação para cada posição do vetor:
if (respostas[1]=='vida') resultado='sim';
if (respostas[2]=='vida') resultado='sim';
e assim sucessivamente.
Mas isso é equivalente a olhar cada posição manualmente e não é nosso interesse. Veja que a linha de comando para cada posição do vetor é a mesma, exceto pelo valor da posição do vetor. Isto é, podemos escrever, de forma geral:
if(resposta[i]=='vida') resultado='sim';
para i=1,..,11.
Mas como transformar o comando acima em um comando que possa ser executado? Vamos introduzir o comando for. Sua estrutura é:
for(var_cont in sequência){
    bloco de comandos; 
}
em que var_cont é uma variável de contagem e sequência é o intervalo de valores que a variável de contagem assumirá.
Para nosso exemplo, escreveríamos:
for(i in 1:length(respostas)){
if (respostas[i]=='vida') resultado='sim';
}
No código acima, criamos uma variável indicadora i que assume os valores de 1 até o tamanho do vetor (length(respostas)) e verifica se existe a palavra vida no vetor de respostas. A comparação será executada 11 vezes, porque vai percorrer todo o vetor.

Obs: A variável criada dentro do parâmetro do comando for (no caso, a variável i) será usada apenas dentro do for. Quando esse parar de ser executado, essa variável não existirá mais.

Como nosso problema consiste em analisar se existe ou não a palavra vida, podemos parar a repetição se acharmos alguma palavra vida, esteja ela no começo, no meio ou no final do vetor. Para sair de um loop sem que este tenha terminado, usamos o comando break:
for(i in 1:length(respostas)){
if (respostas[i]=='vida') {
resultado='sim';
break;
}
}
Ou seja, se, em alguma iteração do for acima, a condição respostas[i]=='vida' for verdadeira, o resultado é 'sim' e as iterações são paradas.

Uma outra estrutura de repetição é o comando while. Sua estrutura é:
while( condição ) {
bloco de comandos;
}
em que condição é uma condição para que o bloco de comandos seja executado sempre que for verdadeira.
Como não se criam variáveis dentro do parâmetro do comando while, essas devem ser declaradas antes desse comando. No nosso exemplo, faríamos:
i<-1
while( i<= length(respostas) ) {
if (respostas[i]=='vida') {
resultado='sim';
break;
}
i=i+1;
}
No código acima, declaramos uma variável de contagem antes do comando while. A condição para executar o loop é que i seja menor ou igual ao tamanho do vetor. Assim, ele executa, verifica se existe a palavra 'vida' na posição i do vetor. Se sim, pára o loop, caso contrário, incrementa 1 na variável de contagem e repete o processo se esse novo valor respeitar a condição. Assim, percorremos cada posição do vetor para verificar se a palavra 'vida' existe nesse vetor de respostas.
É importante ressalta que, quando trabalhamos com variável de contagem, normalmente utilizamos o comando for.