===== Prazer, meu nome é Gui, R Gui =====
Continuando, uma coisa que o //R// gosta bastante de fazer é criar objetos. Para tanto basta escolher um nome e atribuir-lhe algum valor ou conjunto de valores ou mesmo palavras. Se você quiser que seu objeto tenha mais de um elemento basta escrever **c(elemento 1,elemento 2,etc)**. Vamos tentar?
valor=5
pares=c(0,2,4,6,8)
cores=c("azul","vermelho","amarelo")
Quando usamos o símbolo "=" estamos criando objetos com um nome (o que vem antes do = ) e que contém alguns elementos (o que vem depois do = ). Quando criamos um objeto, ele fica guardado na memória do //R// até que você feche o programa. Porém, os objetos criados ficam ocultos. Para ver a lista de arquivos ocultos basta dar o seguinte comando:
ls()
Já para ver o conteúdo de cada objeto basta chamá-lo pelo nome:
valor
pares
cores
Muito bem. Espero que até aqui ninguém tenha morrido **ainda**. Agora vamos fazer um dos truques mais bacanas do //R//: que comece a jogatina! Você sabia que podemos jogar dados com esse programa? Quer apostar?
moeda=c("cara","coroa")
moeda
sample(moeda,1)
sample(moeda,1)
sample(moeda,1)
sample(moeda,1)
A cada vez que você roda //sample(dado,1)// o //R// faz um sorteio. Vamos jogar uns dados agora.
dado=c(1:6)
dado
sample(dado,1)
sample(dado,1)
sample(dado,1)
Gostaram? Mas não vão ficar viciados, hein?! ;-)
Finalmente, vamos às brincadeiras de gente grande. Para a prática de hoje, vamos trabalhar com matrizes. Felizmente é muito fácil transformar um conjunto de dados em uma matriz.
1:100
array(1:100,dim=c(20,5,1))
Note que //dim// define o número de linhas (20) e colunas (5).
Mas podemos ir além e criar um objeto tridimensional:
array(1:100,dim=c(5,5,4))
Note que o terceiro valor de //dim// corresponde à terceira dimensão. O resultado aparece como fatias de um bolo. Conseguiu visualizar?
Outra coisa bacana é que podemos criar objetos vazios. (//NA// quer dizer não se aplica, ou seja, aquela posição não está sendo ocupada por nenhum valor.)
a=rep(NA,10)
a
b=array(NA,dim=c(3,3,1))
b
c=array(NA,dim=c(3,3,3))
c
Mas qual a graça de se fazer isso? A graça é que depois podemos preencher os lugares vazios com os valores que quisermos.
a[1]=2
a
a[1]
b[3,3,1]="oi"
b
b[2,2,1]="oi"
b
b[1,1,1]="oi"
b
b[3,3,1]
c[3,3,1]="oi"
c
c[3,3,2]="ai"
c
c[3,3,3]="ui"
c
c[3,3,3]
Pronto, agora sem querer querendo vocês já sabem indexar! O que é isso? É simplesmente dizer a posição de um objeto que você quer. Se for um objeto simples do tipo linear, como é o caso de //a//, basta escrever o nome do objeto e em seguida um valor dentro dos colchetes (**nome[posição]**). Se for uma matriz como o //b//, você tem que dizer **nome[número da linha, número da coluna, 1]**. Finalmente, se for um objeto tridimensional como o //c// você deve dizer **nome[número da linha, número da coluna, número da fatia do bolo]**.
Outro forte do //R// é a criação de gráficos. Veja alguns exemplos extremamente simples:
plot(1:10,10:1)
plot(1:10,10:1,pch=2)
plot(1:10,10:1,pch=2,col=2)
plot(1:10,10:1,pch=2,xlab="eixo x")
plot(1:10,10:1,pch=2,xlab="eixo x",ylab="eixo y")
hist(rnorm(1000),col=33)
arrows(2,100,2,70,col=2)
boxplot(iris$Sepal.Length~iris$Species)
Agora, o golpe de misericórdia: como criar uma função. Criar uma função nada mais é do que programar o computador para fazer uma tarefa em seu lugar. Soou interessante? Pois é, mas isso exige um pouco mais do nosso esforço. Vamos ver um exemplo bem simples. Vou ensinar o programa a calcular a média de um conjunto de valores.
media=function(objeto){sum(objeto)/length(objeto)}
media(c(1,2,3))
alturas=c(1.4,1.7,2.0,1.6,1.8)
media(alturas)
Note que entre parênteses estão os valores ou o objeto dos quais você quer a média. Entre chaves está o comando que calcula a média. Note também que para calcular a média usei duas funções pré-existentes no //R//: //sum// e //length//. Na verdade também já existe uma função pronta que calcula a média: //mean//.
sum(alturas) # soma dos elementos do objeto "alturas"
length(alturas) # número de elementos do objeto "alturas"
mean(alturas) # média dos elementos do objeto "alturas"
O "#" em cada linha de comando significa que o //R// deve desconsiderar o texto. Isso é bom: quer dizer que o programa não se mete na conversa dos outros.
Bom, isso é tudo, ou quase tudo, o que precisávamos saber sobre a lógica do //R// para fazermos a prática. Não se preocupem com detalhes sobre a linguagem. Contem com seu guia: o roteiro a seguir. E se ele falhar, por favor não hesitem em clamar pela ajuda dos professores e monitores. Boa sorte. =)
Se você se interessou pelo programa não se sinta mal. Ele realmente é incrível, pois te permite fazer quase tudo que quiser. Não deixe de dar uma xeretada no site da {{http://ecologia.ib.usp.br/bie5782/doku.php|disciplina do R}}, oferecida para os alunos de pós graduação ou de trocar uma idéia com os professores, que são feras no assunto. O começo, como toda linguagem, é uma subida árdua. Mas com o tempo a coisa chega a ser até prazerosa. 8-o