===== 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