########################################################################### ####--------Introdução ao ambiente de programação no software R--------#### ########################################################################### ####O material deste arquivo foi baseado nas apostilas sobre o software#### ########## R básico de autoria do professor Adílson dos Anjos ############ ############### e do professor Paulo Justiniano ########################### #o "R" trabalha com programação orientada à objetos #para entender melhor podemos executar o comando abaixo a <- 2 #o comando significa que o objeto "a" recebe o valor "2" a #digitando o nome do objeto é mostrado o valor que foi armazenado #o "R" é sensível a letras maiúsculas e minúsculas A <- 3 a A #os objetos podem receber nomes maiores mas que não podem começar #com números ou com "." #comandos podem ser separados em uma mesma linha por ";" x <- 2;y <- 3;x;y #se um comando não for completado o sinal de "+" aparecerá dados <- c(2,3 #se isso ocorrer, digite o comando que está faltando ou "ESC" para cancelar ) dados #o uso do método recursivo possibilita a execução de expressões dentro # de expressões a <- 6 c <- a/(b <- 2);c #para listar os objetos armazenados dentro do diretório de trabalho #utilaza-se o comando abaixo ls() #para remover os objetos armazenados utiliza-se o comando abaixo #rm(list=ls()) #operações matemáticas simples podem ser executadas na linha de comando 2+2 2*3 4/2 2^2 #algumas funções matemáticas estão prontas para o uso sqrt(4) sin(x) #algumas aplicações com vetores(vetores serão discutidos com mais detalhes) a <- c(2,4,6) b <- c(1,2,3) a+b a/b x <- 2 y <- c(4,8,10) y*x y/x #outros comandos sobre vetores y sum(y)#executa a sima do vetor length(y) media <- sum(y)/length(y) media mean(y) var(y) sd(y) #pode-se trabalhar com operadores lógicos definidos de acordo com seguintes #símbolos # <: menor # <=: menor igual # >: maior # >=: maior igual # ==: igual # !=: diferente # &: "e" # ||: "ou" a <- c(1,2,3,4,5) a>3 a!=2 b <- c(1,2,3,5,5) (b>2) & (b==5) b which(b==3) #existem várias formas de se obter ajuda no "R", por exemplo: help(anova) ?anova #ainda é possível buscar ajuda das seguintes formas help.search("anova") help.search('anova') #para a visualização de exemplos pode-se usar: example(t.test) #existem de pacotes demonstração que apresentam as funcionalidades do software demo(graphics) #digitando o comando abaixo pareceráu uma lista das demos disponíveis demo() #os tipos de objeto mais importantes para o nosso trabalho são: #Vetores; #Matrizes; #Fatores; #Listas; #Data frames; #Funções; x <- c(1,2,3,4,5) x is.numeric(x) class(x) #objetos podem ser convertidos com comando: x <- as.factor(x) class(x) is.numeric(x) #o "R" possui várias formas para gerar sequencias de números a <- 1:20 a b <- 1:20 b #uma sequencia mais elaborada pode ser construída usando a função "seq" seq(0,10, by=0.2) seq(length=12, from=0, by=3) seq(0,20,length=12) #usando a função "rep" rep(c(1,2,3),2) rep(c(1,2,3), each=2) rep(1:3, each=3, times=2) rep("r", 5) #a função "rep" gera um vetor numérico ou alfanumérico #para ser utlizado como um fator em um experimento é necessário convertê-lo #em um fator #pode-se utilizar o comando "gl" que cria um vetor da classe "factor" A <- gl(4,2) A class(A) levels(A) gl(2,4) gl(3,3,length=18) #para cada elemento de um vetor é possível atribuir um nome notas <- c(7,5,8,5,9) names(notas) <- c("Joao","Pedro","Paulo","Jose","Tiago") notas aprovados <- notas>=7 aprovados #####------------------- GRAFICOS ---------------------##### demo(graphics) demo(image) demo(persp) #plotando um gráfico simples x <- 1:10 y <- sqrt(x) plot(x,y) #pode-se acrescentar ao gráfico textos e outros elementos plot(x,y,main="Titulo") plot(x,y,main="Titulo",sub="sub titulo\n") plot(x,y,main="Titulo",xlab="Eixo x",ylab="Eixo y") plot(x,y,main="Titulo",xlab="Eixo x",ylab="Eixo y",type="l") plot(x,y,main="Titulo",xlab="Eixo x",ylab="Eixo y",type="l",col="red") plot(x,y,main="Titulo",xlab="Eixo x",ylab="Eixo y",type="l",col=2, axes=FALSE) plot(x,y,main="Titulo",xlab="Eixo x",ylab="Eixo y",type="b",col=2) #pode-se acrescentar pontos e linhas em um gráfico plot(x,y) points(rev(x),y) lines(x,3-y) lines(x,4-y) lines(x,5-y) #pode-se adicionar linhas com comando abline plot(x,y) abline(h=c(3,2)) abline(v=4) #o argumento "pch" define o símbolo que será utilizado no gráfico x<-1:20 y<-1:20 plot(x,y,pch=1:20) #o comando "cex=" aumenta ou diminui o tamanho dos caracteres gráficos plot(x,y,pch='E',cex=1.5) plot(x,y,pch=1:20,cex=0.5) #identificar um ponto no gráfico plot(x,y) locator(n=1) #identificar vários pontos no gráfico identify(x,y) #inserir uma legenda no gráfico plot(x,y) legend(x=8,y=2,legend="pontos",pch=1,cex=1.5) plot(x,y,type="l") lines(x,y+1,col=2) legend(8,2,c("Grã 1","linha 2"),pch=19 ,col=1:2,cex=1.5) #inserir um texto no meio do gráfico text(locator(2),"Ponto") pdf("Meugrafico2.pdf") plot(x,y,type="l") lines(x,y+1,col=2) legend(8,2,c("Grã 1","linha 2"),pch=19 ,col=1:2,cex=1.5) dev.off() #para dividir a janela gráfica usa-se o comando "par() par(mfrow=c(2,2)) plot(x,y) plot(x,y) #para retornar a janela gráfica à configuração normal basta fechá-la #####----------------- VETORES -------------------##### #o objeto mais simples do "R" é um vetor x.n<-c(89,65,76.5) x.l<-c('a','b','c') x.l<-letters[1:3] x.l x.L<-LETTERS[4:5] x.L #outras formas de secriar um vetor assign ("x.n",c(89,65,76.5)) c('a','b','c')->x.l #pode-se criar um vetor utilizando o comando "scan" dados<-scan() dados #pode-se trabalhar com os elementos dentro do vetor x<-1:10 x y<-x[5:10] x; y #retira a terceira observação de y z<-y[-3];z z z[1]<-NA z mean(na.omit(z)[-1]) a<-1:5 c<-a[a>2] c #####----------------- LISTAS E VETORES -------------------##### #uma lista é uma coleção de objetos no "R" dados<-list(nome="Adilson",civil="casado", cachorros=2) dados #os objetos de uma lista não precisam ser da mesma classe ou tamanho dados[3] dados[[3]] dados$cachorro #a função "length" fornece o número de objetos na lista ou o tamanho da lista length(dados) #pode-se digitar apenas um número mínimo de letras para identificar o objeto dados$c dados$ca #para alterar os valores da lista dados[[3]]<-1 dados$cachorros<-1 dados$profissao<-"professor" dados #####----------------- MATRIZES -------------------##### #criando uma matriz m1 <- matrix(1:12, ncol = 3) m1 matrix(1:12, ncol = 3, byrow = T) #obtendo alguns parâmetros da matriz length(m1) dim(m1) nrow(m1) ncol(m1) #extraindo alguns valores da matriz m1[1, 2] m1[2, 2] m1[, 2] m1[3, ] m1[1:2, 2:3] #atribuindo nomes as dimensões da matriz dimnames(m1) dimnames(m1) <- list(c("L1", "L2", "L3", "L4"), c("C1", "C2", "C3")) dimnames(m1) m1[c("L1", "L3"), ] m1[c(1, 3), ] m2 <- cbind(1:5, 6:10) m2 m3 <- cbind(1:5, 6) m3 #operações com matrizes m4 <- matrix(1:6, nc = 3) m5 <- matrix(10 * (1:6), nc = 3) m4 m5 m4*m5 m4+m5 m5-m4 m4/m5 #a multiplicação de matrizes é feita usando o operador %*%. A funçãoo t() faz transposição e a inversão é obtida com solve(). t(m4) %*% m5 #a função solve() fornece a solução de sistemas de equações lineares. # x + 3y - z = 10 # 5x - 2y +z = 15 # 2x + y - z = 7 mat <- matrix(c(1, 5, 2, 3, -2, 1, -1, 1, -1), nc = 3) vec <- c(10, 15, 7) solve(mat, vec) #####----------------- DATA FRAMES -------------------##### d1 <- data.frame(X = 1:10, Y = c(51, 54, 61, 67, 68, 75, 77, 75, 80, 82)) d1 names(d1) d1$X d1$Y plot(d1) plot(d1$X, d1$Y) d2 <- data.frame(Y = c(10 + rnorm(5, sd = 2), 16 + rnorm(5, sd = 2), 14 + rnorm(5, sd = 2))) d2 d2$lev <- gl(3, 5) d2 by(d2$Y, d2$lev, summary) d3 <- expand.grid(1:3, 4:5) d3 expand.grid(1:3, 1:2) #Listas lis1 <- list(nomes = c("Pedro", "Joao", "Maria"), mat = matrix(1:6, nc = 2)) lis1