Profa. Suzi [email protected] euler.mat.ufrgs.br/~camey
description
Transcript of Profa. Suzi [email protected] euler.mat.ufrgs.br/~camey
Rweb
http://www.math.montana.edu/Rweb/
Aula 17/05/07Maiores detalhes: http://leg.ufpr.br/~paulojus/embrapa/Rembrapa/
Aritmética e Objetos Operações aritméticas Valores faltantes e especiais Objetos
Tipos de objetos Vetores Matrizes Arrays Data-frames Listas
Exercícios
Aritmética e Objetos
Operações aritméticas
>help(Arithmetic)
sqrt raiz quadrada
abs valor absoluto (positivo)
sin cos tan funções trigonométricas
asin acos atan funções trigonométricas inversas
sinh cosh tanh funções hiperbólicas
asinh acosh atanh funções hiperbólicas inversas
exp log exponencial e logaritmo natural
log10 logaritmo base-10
Aritmética e Objetos
Valores faltantes e especiais
NA: Not Available, denota dados faltantes. Note que deve utilizar maiúsculas.
NaN: Not a Number, denota um valor que não é representável por um número.
Inf ; -Inf: mais ou menos infinito. exp(1): e pi:
Aritmética e Objetos
Objetos O R é uma linguagem orientada à
objetos: variáveis, dados, matrizes, funções, etc são armazenados na memória ativa do computador na forma de objetos.
>ls(): lista os objetos guardados na memória ativa
Aritmética e Objetos
Como atribuir valores aos objetos:
> x <- 25
> x * sqrt(x) -> x1
> x2.1 = sin(x1)
Aritmética e Objetos
Como NÃO atribuir valores aos objetos:
> 99a <- 10: nome do objeto deve começar com letra.
> a1 <- sqrt 10: sqrt é uma função portanto exige ( ).
> a-1 <- 99: não aceita hífen.
> sqrt(x) <- 10: não faz sentido
Aritmética e Objetos
Exemplos de nomes de objetos a serem evitados: c q s t C D F I T diff exp log mean pi range rank var
Exemplos de nomes reservados:
FALSE Inf NA NaN NULL TRUE break else for function if in nextrepeat while
Tipos de objetos: Vetores
função c() ("c" de concaternar) é usada para
criar um vetor Ex.: x<-c(2,3,52,9)
Os colchetes [ ] são usados para indicar seleção de elementos. Ex.: x[2]
Tipos de objetos: Vetores As funções rep(), seq() e o símbolo ":" são usadas para
facilitar a criação de vetores que tenham alguma lei de formação. :
Ex.: xx <- 100:1 >help(rep)
Ex.: > rep(1:4, each = 12) > rep(1:4, rep(12, 4)) > rep(rep(1:3, each = 4), 4) > rep(1:4, 12)
>help(seq) Ex.: >seq(1,10,1)
>seq(1,10,2) > seq(10,1,3) > seq(10,1,-3)
Tipos de objetos: Vetores Operações com vetores> x <- 1:10 > x + 2 > x * 2 > sqrt(x) > y <- 21:30 > x+y [1] 22 24 26 28 30 32 34 36 38 40 > z <- c(1,2) > x+z > w <- c(1,2,1) > x + w
Tipos de objetos: Vetores Caracteres e Fatores
Caracteres> c1 <- "Hello" > c2 <- c("Yes",'Maybe',"No") > c3 <- rep("Monkey",4) > c4 <- rep(c("Monkey","Bucket"),3)
Fatores> c5 <- c('M','F','F','F','M','M') > f5 <- as.factor(c5) > levels(f5) > levels(f5) <- c("Female","Male") > alt <- c(175, 184, 180, 182, 176, 174, 169) > sexo <- as.factor(rep(0:1, c(4,3))) > levels(sexo) <- c("homem", "mulher") > table(sexo) > mean(alt) [1] 177.1429 > by(alt, sexo, mean) > ave(alt, sex)
Tipos de objetos: Vetores
Valores Lógicos gt5 <- x > 5
Operadores Lógicos> x > 2 & x < 7 x < 2 | x >7
"TRUE" e "FALSE" como números...> y <- x > 3 > y*2 > sum(y)
Tipos de objetos: Vetores
Índices> y <- x[2] > y <- x[c(1,3,5)] > x[4:7] > x[12]
Índices Negativos> x[-3] > x[c(3,4,7)]> x[-c(3,4,7)] > x[-length(x)] > x[length(x):1]
Índices Lógicos> x <- c(6,5,6,4,4,3,4,2,3,4) > y <- c(5,3,4,2,6,5,4,5,4,3) > xeq4 <- x == 4> y[xeq4] > y[x == 4] > x[x > 5] > x <- c(3, 5, 3, 2, 5, 7, 5) > y <- c(23, 21, 20, 12, 20, 30, 29) > x == 5 > y[x == 5]
Tipos de objetos: Matrizes Criando Matrizes
> x <- 1:12 > xmat <- matrix(x,ncol=3) > matrix(x,ncol=3,byrow=T)> xmat<-matrix(0,2,3)> x <- matrix(10:1,ncol=2) > y <- cbind(x,1:5) > y <- rbind(y,c(99,99,99)) > z <- cbind(y,rep(88,6),y)
Informações sobre a matriz> x1 <- matrix(1:12,ncol=4) > dim(x1) > summary(x1) > summary(as.vector(x1))
Tipos de objetos: Matrizes
Operações com matrizes Mesmas operações dos vetores
> x1 <- matrix(1:6,ncol=2) > x2 <- matrix(6:1,ncol=3) > x1 %*% x2 > t(x1)*x2
Tipos de objetos: Matrizes Índices das matrizes
> z[2,5] > z[,4] > z[3,] > z[c(1,3,5),] > z[,5:7] > z[c(2,3),c(4,6)]
Voce pode querer selecionar as pessoas (linhas) que atendem a um certo critério (idade, sexo, etc). Vamos definir uma matrix onde as colunas armazenam: índices 1 a 5, idade e sexo (codificado com 0/1) de cinco pessoas. > people <- cbind(c(1,2,3,4,5),c(43,55,52,23,46),c(1,1,0,1,1)) > oldies <- people[people[,2]>50,] > people[,2] > people[,2]>50 > people[people[,2]>50 , ]
Tipos de objetos: Arrays
> ar1<-array(1:24,dim=c(3,4,2)) > ar1[,2:3,] > ar1[2,,1] > sum(ar1[,,1]) > sum(ar1[1:2,,1]) > dimnames(ar1) > dimnames(ar1)<-list(c("Baixo","Médio","Alto"),paste("col",+1:4,sep=""),c("Masculino","Feminino"))
Tipos de objetos: Arrays Veja agora um exemplo de dados já incluído no R no formato de array.
> data(Titanic) > Titanic > help(Titanic)
Quantas pessoas havia no total? > sum(Titanic)
Quantas pessoas havia na tripulação (crew)?> sum(Titanic[4, , , ])
Quantas pessoas sobreviveram e quantas morreram?> apply(Titanic, 4, sum)
Quantas crianças sobreviveram?> sum(Titanic[, , 1, 2])
Quais as proporções de sobreviventes entre homens e mulheres?> apply(Titanic, 2, sum) > apply(Titanic[, , , 2], 2, sum) > 100 * apply(Titanic[, , , 2], 2, sum)/apply(Titanic, 2, sum)
Tipos de objetos: Data-frames
Vetores, matrizes e arrays forçam todos os elementos a serem do mesmo "tipo"i.e., ou numérico ou caracter. O "data-frame"é uma estrutura semelhante à uma matriz porém com cada coluna sendo tratada separadamente.
> d1 <- data.frame(X = 1:10, Y = c(51, 54, 61, 67, 68, 75, 77, 75, 80, 82))> names(d1) > d1$X > d1$Y > plot(d1)> plot(d1$X, d1$Y) > d3 <- expand.grid(1:3,4:5) > d4 <- data.frame(X = letters[1:10], Y = c(51, 54, 61, 67, 68, 75, 77, 75,
+ 80, 82))
Tipos de objetos: Listas
Listas são estruturas genéricas e flexíveis que permitem armazenar diversos formatos em um único objeto.
> lis1 <- list(A = 1:10, B = "THIS IS A MESSAGE", C = matrix(1:9, ncol = 3))
Uma lista é portanto uma coleção de objetos. Para listas há duas opções para se selecionar elementos: colchetes [ ] ou colchetes duplos [[ ]]. Entretanto os resultados retornados por cada um destes é diferente.
> lis1 <- list(nomes = c("Pedro", "Joao", "Maria"), mat = matrix(1:6,nc = 2)) > lis1[1] > lis1[2] > lis1[[2]]
Exercícios
http://leg.ufpr.br/~paulojus/embrapa/Rembrapa/Rembrapase6.html#x7-310006.8