Luís Torgo, 2002FEP, UP Indexação de vectores Para aceder a um elemento de um vector usamos a sua posição entre parênteses rectos. O R também nos permite.

Slides:



Advertisements
Apresentações semelhantes
Prof. José Junior Barreto TEORIA DOS DETERMINANTES
Advertisements

Nilo Menezes – Lógica de Programação –
DETERMINANTES de Ordem n (n > 3).
Lógica e Estrutura de Dados Fundamentais Professor: Eduardo O. Teles
Amintas engenharia.
Operadores e Funções do LINGO
Exercício do Tangram Tangram é um quebra-cabeças chinês no qual, usando 7 peças deve-se construir formas geométricas.
Pearson Education Slide 1. Pearson Education Slide 2 Capítulo 2 Criado por Frederick H. Colclough, Colorado Technical University Fluxo de Controle.
FINANÇAS EM PROJETOS DE TI
Álgebra Linear e Geometria Analítica
O R é um program gratuito que permite entre outras coisas:
Luís Torgo, 2002FEP, UP Data Frames Os data frames são objectos usados para guardar tabelas com dados sobre um problema. –Uma tabela de dados é formada.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 5.
Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 4.
Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 6.
Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 4.
Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II
9 Março 2007Matrizes e Gráficos - Trajectória de um Projéctil1 Matrizes e Gráficos Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores.
Introdução aos Computadores e à Programação
16 Dezembro 2005Folha de Cálculo - Conclusão1 Folha da Cálculo - Conclusão Jorge Cruz DI/FCT/UNL Programação para as Ciências Experimentais 1º Semestre.
2 de Junho de 2005Conclusão1 Pedro Barahona DI/FCT/UNL Junho 2005.
Matrizes e Gráficos Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 1º Semestre 2007/2008.
1 Conclusão DI/FCT/UNL 1º Semestre 2004/ Ciclos de Simulação A técnica usada no exemplo da queda livre pode ser utilizada para trajectórias a duas.
Matrizes e Gráficos Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009.
Determinantes.
Sistemas lineares.
Prof. M.Sc. Fábio Francisco da Costa Fontes Agosto
Excel Profa. Cristina M. Nunes.
Determinantes Determinante é um número real associado a uma matriz quadrada. Notação: det A ou |A|. Determinante de uma Matriz Quadrada de 1ª Ordem. Seja.
Análise de regressão linear simples: abordagem matricial
INE Fundamentos Matemáticos da Computação
Introdução à Computação Gráfica Geometria
A Teoria dos Determinantes
R Profa. Suzi
O que você deve saber sobre
MATRIZES Prof. Marlon.
FUNÇÃO MODULAR.
MATRIZES É uma tabela disposta em “m” linhas e “n” colunas.
MATRIZES REAIS ( 2ª AULA ).
O Portal do Estudante de Computação
INVERSÃO DE MATRIZES.
E PROF. VILSON SCHWANTES.
Amintas engenharia.
Determinantes.
Calculada a solução óptima
Tópicos em Gestão de Serviços – Regressão Linear
MECÂNICA - ESTÁTICA Vetores Forças Cap. 2.
Introdução à Álgebra Linear Turma B1 Profa. Ana Maria Luz
Oferta e Demanda A Curva de Oferta
MATEMÁTICA UNIDADE 2 Conteúdo: Determinante Duração: 10 40’ 31/03/14
SISTEMAS LINEARES.
3 - MATRIZ COMPLEMENTAR E CO-FATOR
MATRIZES, DETERMINANTES E SISTEMAS LINEARES
Passos utilizados numa regra de três simples:
Aula 02 Variáveis, Matrizes, Gráficos
Programação Linear Rosa Canelas Janeiro 2008.
Múltiplos de um número Sonia Regina de Souza Guedes.
Pesquisa Operacional Sistemas Lineares
Aula prática 6 Vetores e Matrizes
Determinantes Conceito Representação Propriedades
Instituto de Aplicação Fernando Rodrigues da Silveira (CAp/UERJ)
Prof. Ricardo Santos PONTEIROS
Sistemas Lineares Métodos de Resolução Algébrico Produto de Matrizes
Sistema de equações lineares
Data Frames (tabelas) e Matrizes
Computação Gráfica Aula 3 Transformações Geométricas
Fundamentos de Programação
Vetores e Matrizes Ameliara Freire
MATRIZ DE PARENTESCO Nas equações do Modelo Misto, é incluída a matriz de parentesco ( a inversa desta, A-1). Para que? A matriz de parentesco de n indivíduos.
POTENCIAÇÃO E FUNÇÃO EXPONENCIAL
Transcrição da apresentação:

Luís Torgo, 2002FEP, UP Indexação de vectores Para aceder a um elemento de um vector usamos a sua posição entre parênteses rectos. O R também nos permite usar vectores dentro desses parênteses rectos. Esses vectores chamam-se vectores de índices. –Existem vários tipos de vectores de índices. Os vectores de índices booleanos extraem de um vector os elementos correspondentes a posições verdadeiras. > x <- c(0,-3,4,-1,45,90,-5) > x [1] > x > 0 [1] FALSE FALSE TRUE FALSE TRUE TRUE FALSE > y 0 > x[x>0] [1]

Luís Torgo, 2002FEP, UP Tirando partido da gama de operadores lógicos disponíveis no R, podemos construir vectores de indexação lógicos mais complexos, > x[x 5] [1] > x[x > 40 & x < 100] [1] O R também nos permite usar um vector de números inteiros como índice. –Os números desse vector de índices correspondem aos elementos a extrair do outro vector, > (v <- c('a','b','c','d','e','f','g','h','i','j')) [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" > v[c(4,6)] [1] "d" "f" > v[1:3] [1] "a" "b" "c" OU lógico E lógico > x [1]

Luís Torgo, 2002FEP, UP Podemos ainda usar um vector com números negativos –Permite-nos indicar quais os elementos a não obter como resultado da indexação, > v[-1] [1] "b" "c" "d" "e" "f" "g" "h" "i" "j" > v[-c(4,6)] [1] "a" "b" "c" "e" "g" "h" "i" "j" > v[-(1:3)] [1] "d" "e" "f" "g" "h" "i" "j Note bem a importância dos parênteses no último exemplo, devido à precedência do operador '':' –Experimentar sem os parênteses.

Luís Torgo, 2002FEP, UP Um vector também pode ser indexado por um vector de strings Isto consegue-se tirando partido do facto de o R permitir dar nomes aos elementos de um vector através na função names(). –Vectores com os elementos com nomes são por vezes preferíveis pois as suas ``posições'' são mais facilmente memorizáveis. –Suponhamos que tínhamos um vector com as taxas de inflação de 5 países europeus. Poderíamos criar um vector com nomes da seguinte forma, > tx.infl <- c(2.5,2,2.1,2.3,1.9) > names(tx.infl) <- c('Portugal','França','Espanha','Itália','Alemanha') > tx.infl Portugal França Espanha Itália Alemanha Os elementos do vector tx.infl podem agora ser acedidos usando os seus nomes, > tx.infl['Portugal'] Portugal 2.5 > tx.infl[c('Espanha','Alemanha')] Espanha Alemanha

Luís Torgo, 2002FEP, UP Os índices também podem ser vazios –Significa que todos os elementos são seleccionados. Por exemplo, se pretendemos preencher todas as posições de um vector com zeros podemos fazer, x[] <- 0 De notar, que isto é diferente de fazer, x <- 0 Esta última instrução teria como efeito atribuir ao vector x um vector com um único elemento (zero), enquanto que a primeira alternativa, assumindo que o vector x já existia, iria substituir todos os seus elementos por zero.

Luís Torgo, 2002FEP, UP Algumas funções úteis sobre vectores Estatísticas básicas > tx.infl <- c(2.5,2,2.1,2.3,1.9) > names(tx.infl) <- c('Portugal','França','Espanha','Itália','Alemanha') > tx.infl Portugal França Espanha Itália Alemanha > sort(tx.infl) Alemanha França Espanha Itália Portugal > max(tx.infl)> min(tx.infl) [1] 2.5 [1] 1.9 > which.max(tx.infl)> which.min(tx.infl) [1] 1 [1] 5 > tx.infl[which.max(tx.infl)] Portugal 2.5 > mean(tx.infl) > sd(tx.infl) [1] 2.16 [1]

Luís Torgo, 2002FEP, UP > summary(tx.infl) Min. 1st Qu. Median Mean 3rd Qu. Max > barplot(tx.infl) > barplot(tx.infl,main='Inflação na UE',ylab='Taxa',xlab='Países')

Luís Torgo, 2002FEP, UP Imagine que possui informação quanto aos preços de 10 produtos. Guarde-os num objecto apropriado do R. > preços <- c(54,32,76,45.3,45.8,132,47,43,98,100) 2.Quais os valores de IVA a pagar por cada produto? > 0.19 * preços 3.Suponha que possui informação sobre os nomes dos produtos. Tire partido dessa informação para mais facilmente aceder aos preços dos produtos. > names(preços) <- c(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) Alternativa (mais prática para muitos produtos): > names(preços) <- paste(p,1:10,sep=) 4.Ordene os produtos por ordem crescente de preço. Como obter os preços por ordem decrescente (sugestão consulte o help da função sort). > sort(preços) > sort(preços, decreasing=T) 5.Quais o mais caro e o mais barato dos produtos? > max(preços)OU> preços[which.max(preços)] > min(preços)> preços[which.mix(preços)]

Luís Torgo, 2002FEP, UP 6.Coloque num vector os produtos com preço superior à média dos preços. > sup mean(preços)] 7.Quais os 3 produtos mais caros? > sort(preços,decreasing=T)[1:3] Suponha que pretende guardar as vendas nos meses do último ano das 2 sucursais de uma empresa. Escolha o objecto do R apropriado e tire partido das potencialidades do R para facilitar o acesso a esta informação. > vendas <- matrix(c(23,43,54,23,53,43,54,65,76,34,65,34,546,67, + 35,45,56,57,34,34,46,56,57,678),2,12) > colnames(vendas) <- c('Jan','Fev','Mar','Abr','Mai','Jun','Jul', + 'Ago','Set','Out','Nov','Dez') > rownames(vendas) <- c('Braga','Faro') Como saber qual o volume de vendas médio de cada sucursal ao longo do ano? > mean(vendas['Braga',]) > mean(vendas['Faro',]) Experimente esta alternativa: > apply(vendas,1,mean) tente também > apply(vendas,2,mean) 10.Construa um gráfico de barras com as vendas de uma das sucursais ao longo do ano. > barplot(vendas['Braga',],main='Vendas em Braga', + ylab='Volume de Vendas')

Luís Torgo, 2002FEP, UP Matrizes As matrizes arranjam a informação em duas dimensões. –Em contraposição aos vectores que a arranjam numa só dimensão. Em R as matrizes não são mais do que vectores com duas dimensões. –Podemos guardar um conjunto de valores numa matriz da seguinte forma: > m <- matrix(c(45,23,66,77,33,44,56,12,78,23),2,5) > m [,1] [,2] [,3] [,4] [,5] [1,] [2,] Número de linhas Número de colunas

Luís Torgo, 2002FEP, UP > m <- matrix(c(45,23,66,77,33,44,56,12,78,23),2,5) [,1] [,2] [,3] [,4] [,5] [1,] [2,] Podemos espalhar os números por linha da seguinte forma: > m <- matrix(c(45,23,66,77,33,44,56,12,78,23),2,5,byrow=T) > m [,1] [,2] [,3] [,4] [,5] [1,] [2,] Podemos aceder aos elementos de uma matriz da seguinte forma: > m[2,4] [1] 78 > m[1,1] [1] 45 Podemos aceder a todos os elementos de uma dimensão da seguinte forma: > m[1,] [1] > m[,3] [1] ª linha 3ª coluna Note : o resultado é um vector. Os números foram espalhados por coluna.

Luís Torgo, 2002FEP, UP As regras da reciclagem também são usadas com matrizes > preços.lojas.2002 <- matrix(c(10.4,12,32,34,32.3,30.2,343,350),2,4) > preços.lojas.2002 [,1] [,2] [,3] [,4] [1,] [2,] > (preços.lojas.2003 < * preços.lojas.2002) [,1] [,2] [,3] [,4] [1,] [2,]

Luís Torgo, 2002FEP, UP Dar nomes às dimensões Por vezes é mais simples usarmos nomes nas dimensões. > preços.lojas.2002 <- matrix(c(10.4,12,32,34,32.3,30.2,343,350),2,4) > colnames(preços.lojas.2002) <- c('p1','p2','p3','p4') > rownames(preços.lojas.2002) <- c('porto','lisboa') > preços.lojas.2002 p1 p2 p3 p4 porto lisboa > preços.lojas.2002['porto','p3'] [1] 32.3 > preços.lojas.2002['lisboa',] p1 p2 p3 p > preços.lojas.2002[,'p2'] porto lisboa > preços.lojas.2002[,2] porto lisboa Continuamos a poder usar os números

Luís Torgo, 2002FEP, UP Álgebra Matricial Para obtermos a multiplicação matricial de duas matrizes usamos: > m1 <- matrix(c(45,23,66,77,33,44),2,3) > m1 [,1] [,2] [,3] [1,] [2,] > m2 <- matrix(c(5,3,466,54.5,3.2,-34),3,2) > m2 [,1] [,2] [1,] [2,] [3,] > m1 %*% m2 [,1] [,2] [1,] [2,]

Luís Torgo, 2002FEP, UP Transposta de uma matriz > m1 [,1] [,2] [,3] [1,] [2,] Determinante e inversa de uma matriz quadrada > m <- matrix(c(34,-23,43,5),2,2) > det(m) [1] 1159 > solve(m) [,1] [,2] [1,] [2,] > t(m1) [,1] [,2] [1,] [2,] [3,] 33 44

Luís Torgo, 2002FEP, UP Resolução de sistemas de equações lineares A função solve() também pode ser usada para resolver este tipo de sistemas. Exemplo: > coefs <- matrix(c(-4,54.3,0.3,-4),2,2) > colnames(coefs) <- c('x','y') > rownames(coefs) <- c('eq1','eq2') > coefs x y eq eq > ys <- c(12.3,45) > solve(coefs,ys) x y

Luís Torgo, 2002FEP, UP Data Frames É semelhante a uma matriz mas as colunas têm nomes Corresponde a uma tabela de uma BD >notas.inform<-data.frame(nros=c(23,34,23,12), +turma = c(tp1,tp1,tp2.tp3), +notas = c(10.3,9.5,7.9,12)) notas.inform Um data frame pode ser acedido como uma matriz >notas.inform[,2] mostra a coluna 2, >notas.inform$nros notas.inform[notas.inform$notas>10,] todos os campos notas.inform[notas.inform$notas>10,c(nros,notas)]

Luís Torgo, 2002FEP, UP A função attach associa a cada coluna o seu nome >attach(notas.inform) Semelhante a fazer >notas<- notas.inform$notas... >notas.inform[notas>10,] mostra todas as linhas >turma Mostra a coluna como notas.inform$turmas A função detach desfaz o attach >detach(notas.inform) Acrescentar novas colunas (=número de elementos) >notas.inform&resultado<-c(aprovado,oral,…) >nrow(notas.inform) >ncol(notas.inform) Editor >notas.inform<-edit(notas.inform)