




























































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Introdução à programação na linguagem R
Tipologia: Notas de aula
1 / 109
Esta página não é visível na pré-visualização
Não perca as partes importantes!





























































































Esta apostila foi desenvolvia com o objetivo de se tornar um roteiro de aula para a disci- plina Programa¸c˜ao Estat´ıstica, oferecida aos alunos do curso de Gradua¸c˜ao em Estat´ıstica pelo Departamento de Estat´ıstica da Universidade Federal Fluminense - UFF. A disciplina de Programa¸c˜ao Estat´ıstica ´e constitu´ıda por uma aula te´orica e duas pr´aticas por semana. Cada cap´ıtulo desta apostila aborda o conte´udo trabalhado em cada semana. Al´em disso a apostila ´e separada em 3 partes. Ao final de cada parte os alunos s˜ao submetidos a uma prova te´orica e uma prova pr´atica. O foco da disciplina ´e praticar t´ecnicas de programa¸c˜ao usando a linguagem de programa¸c˜ao R e tendo como plano de fundo conceitos de estat´ıstica descritiva, ´algebra linear b´asica e c´alculo. O aluno matriculado nessa disciplina j´a foi aprovado em uma disciplina introdut´oria sobre programa¸c˜ao de computadores e por isso este n˜ao ´e o seu primeiro contato com o assunto. Ao final desta disciplina espera-se que o aluno tenha n˜ao s´o aprimorado sua habilidade computacional como tamb´em refor¸cado conceitos de estat´ıstica e c´alculo j´a vistos em outras disciplinas. Para maiores informa¸c˜oes sobre a linguagem de programa¸c˜ao R entre no site oficial do projeto: http://www.r-project.org/. L´a ´e poss´ıvel obter informa¸c˜oes sobre como baixar e instalar o R em seu computador. Al´em disso, manuais introdut´orios s˜ao dispo- nibilizados gratuitamente.
i
Toda vari´avel dentro da linguagem R ´e interpretada como um objeto que pertence a uma determinada classe. Para saber qual a classe de um certo objeto podemos usar o comando class(obj), onde obj ´e o nome do objeto para o qual queremos saber a classe. Existem diversos tipos de classes. Algumas ser˜ao vistas ao longo deste curso e outras apenas em disciplinas futuras. Por exemplo, podemos citar alguns tipos b´asicos que ser˜ao vistos na aula de hoje: "numeric", "logical", "character", "matrix" e "list".
1.1 N´umeros
Os objetos num´ericos fazem parte da classe "numeric" e tratam-se dos n´umeros rais. Para criar um objeto desse tipo podemos usar, por exemplo, o comando x<-3.4. Para verificar a sua classe basta digitar class(x) no prompt do R. A resposta ser´a "numeric". Para os objetos desse tipo j´a est˜ao definidos alguns operadores (+, -, *, /) al´em de fun¸c˜ao conhecidas, como por exemplo sqrt(), log(), exp(), abs(), entre outras. Para saber mais detalhes sobre essas fun¸c˜oes ou sobre a classe "numeric" use o help do R atrav´es do comando help(log) ou help(numeric), por exemplo.
1.2 Textos
Os objetos do tipo textos fazem parte da classe "character" e ´e dessa forma que o R guarda letras ou frases. Dentro do R os textos sempre v˜ao aparecer entre aspas (""). Para criar um objeto desse tipo podemos usar, por exemplo, os comandos ch1<-"a", ch2<-"abc" e ch3<-"1". Os trˆes objetos criados s˜ao da classe "character", para checar isso basta digitar class(ch1), class(ch2) e class(ch3). Veja que class(ch3) n˜ao ´e um n´umero e sim um texto, ou seja, ´e o n´umero 1 armazenado como texto. Um comando bastante ´util para a classe "character" ´e o paste(). Ele recebe como argumento objetos do tipo "character" e retorna um ´unico objeto do tipo "character", que ´e definido pela concatena¸c˜ao dos objetos passados na entrada. Quando chamamos o comando paste() podemos indicar como os objetos ser˜ao separados usando a op¸c˜ao sep. Se o campo sep n˜ao for definido ele ser´a considerado como espa¸co. Aqui est˜ao alguns exemplos de utiliza¸c˜ao do comando paste(). Se digitarmos ch4 <- paste(ch1,ch2,"a",sep="."), ch4 ´e um objeto do tipo "character" definido por "a.abc.a". Se mudarmos o valor de sep a resposta muda complentamente: ch5 <- paste(ch1,ch2,"a",sep=""), ch5 ´e um objeto do tipo "character" definido por "aabca". Se n˜ao definirmos o sep os textos ser˜ao concatenados por espa¸cos, como j´a foi coment- dao: ch6 <- paste(ch1,ch2,"a"), ch6 ´e um objeto do tipo "character" definido por "a abc a".
Objetos e Classes
Para saber mais sobre a classe "character" consulte o help do R atrav´es do comando help(character).
1.3 L´ogicos
Os objetos do tipo l´ogico fazem parte da classe "logical" e podem ser de dois tipos: TRUE ou FALSE. Eles tamb´em podem ser simplesmente representados pelas letras T ou F. Para criar um objeto desse tipo podemos usar, por exemplo, o comando v<-TRUE ou v<-T. Para checar a sua classe basta digitar class(v) no prompt do R. A resposta ser´a "logical". Dentro do R j´a est˜ao definidos os operadores l´ogicos E (∩), representado pelo comando &&, e OU (∪), representado pelo comando ||. A tabela verdade a seguir indica a resposta para cada um desses dois operadores.
A B A&&B A||B TRUE TRUE TRUE TRUE TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE
Tamb´em podemos realizar a nega¸c˜ao usando o comando !. Por exemplo, se a <- TRUE, a! retorna FALSE; se a <- FALSE, a! retorna TRUE. Se quisermos testar se dois objetos s˜ao iguais (ou diferentes), podemos usar os coman- dos == ou != e a resposta ser´a um objeto da classe "logic". Por exemplo, se digitarmos a<-1; b<-1; c<-2, podemos testar se os objetos s˜ao iguais ou n˜ao. Digitando a==a, a==b ou a!=c termos TRUE como resposta. Digitando a==c, a!=b ou b==c termos FALSE como resposta. Para saber mais sobre a classe "logical" consulte o help do R atrav´es do comando help(logical).
1.4 Array
Dentro da linguagem R um array ´e uma sequencia de objetos do mesmo tipo. Por exemplo, podemos ter array de n´umeros reais, isto ´e uma sequˆencia de objetos do tipo "numeric", array de textos, isto ´e uma sequˆencia de objetos do tipo "character", array de “verdadeiro” ou “falso”, isto ´e uma sequˆencia de objetos do tipo "logic", ou array de qualquer outra classe dentro do R. Existem v´arias maneiras de criarmos um array, a mais simples delas ´e usando o co- mando c(), por exemplo, a<-c(1,2,3), b<-c("a", "aa") ou c<-c(T,T,F,F). Nesse caso a ´e um array de n´umeros, b um array de texto e c um array de “verdadeiro” ou “falso”. No R array n˜ao ´e uma classe, como os demais itens citados acima. Se vocˆe usar o comando class() nos objetos a , b e c as respostas ser˜ao: "numeric", "character" e "logic", respectivamente. Isso ocorre pois o R trata qualquer objeto como um array. No caso de ser um objeto simples, e n˜ao uma sequˆencia de objetos, ele interpreta como se fosse um array de tamanho 1, j´a as sequˆencias de objetos s˜ao arrays de tamanhos maiores que 1.
Departamento de Estat´ıstica - UFF 3
Objetos e Classes
Ao lado do sinal de = devemos colocar as informa¸c˜oes da matriz que est´a sendo criada:
data= array com os objetos que ser˜ao alocado dentro da matriz; ncol= n´umero de colunas da matriz; nrow= n´umero de linhas da matriz; byrow= TRUE ou FALSE que indica se os objetos ser˜ao alocados por linha ou por coluna; dimnames = lista^1 com os nomes para as linhas e colunas da matriz. Se alguma das informa¸c˜oes n˜ao for preenchida ser´a considerado o valor padr˜ao para cada entrada, que nesse caso ´e: data=NA, ncol=1, nrow=1 e dimnames = NULL. Vejamos alguns exemplos de como usar este comando e criar matrizes. Considere os seguintes comandos digitados no prompt do R:
mdat1 <- matrix(c(1,2,3,11,12,13), nrow = 2, ncol=3, byrow=TRUE) mdat [,1] [,2] [,3] [1,] 1 2 3 [2,] 11 12 13 Veja que mdat1 ´e um objeto da classe "matrix". Para verificar basta digitar:
class(mdat1) [1] "matrix"
Veja que se mudarmos o n´umero de linhas ou colunas a matriz criada ´e totalmente diferente.
mdat2 <- matrix(c(1,2,3,11,12,13), nrow = 3, ncol=2, byrow=TRUE) mdat [,1] [,2] [1,] 1 2 [2,] 3 11 [3,] 12 13 Veja agora como ficaria a matriz se ela fosse alocada por colunas (byrow=FALSE).
mdat3 <- matrix(c(1,2,3,11,12,13), nrow = 3, ncol=2, byrow=FALSE) mdat [,1] [,2] [1,] 1 11 [2,] 2 12 [3,] 3 13 Quando criamos um objeto da classe "matrix", o n´umero de linhas e de colunas tem que ser determinado logo de in´ıcio e n˜ao pode ser alterado depois. As posi¸c˜oes de uma matriz s˜ao acessadas usando o comando [ , ]. Por exemplo, se digitarmos mdat3[2,1] a resposta sera 2, que ´e o elemento guardado na segunda linha e primeira coluna. Com esse mesmo comando podemos “pegar” linhas ou colunas inteiras de uma matriz: se digitarmos mdat3[1,] a resposta ser´a um array com os elementos da linha 1; se digitarmos mdat3[,2] a resposta ser´a um array com os elementos da coluna
Se quisermos o n´umero de linhas de uma matriz podemos usar o comando nrow(), se digitarmos nrow(mdat3) a resposta ser´a 3. Para saber o n´umero de colunas de uma matriz use, de forma an´aloga, o comando ncol().
(^1) A classe lista ser´a vista na pr´oxima se¸c˜ao.
Departamento de Estat´ıstica - UFF 5
Objetos e Classes
Para saber mais sobre a classe "matrix" consulte o help do R atrav´es do comando help(matrix).
1.6 Listas
Na linguagem R a classe que guarda os objetos em forma de lista ´e denominada "list". Esse objeto guarda uma sequˆencia de objetos e a sua principal diferen¸ca para os arrays ´e que a lista pode guardar objetos de tipos diferentes. Para criarmos uma lista vamos usar o comando list(). Se simplesmente digitar- mos l1 <- list(), a l1 ser´a uma lista vazia. Se dentro dos parˆenteses colocarmos uma sequencia de objetos, a lista criada guardar´a os objetos digitados. Por exemplo: l2 <- list(1,"a",TRUE), l2 ´e uma lista com 3 objetos; ou l3 <- list(c(1,2,3),c(1,1,1,1), TRUE,c("A","a")), l3 ´e uma lista com 4 objetos. Podemos at´e criar uma lista de listas, por exemplo l4 <- list(l1,l2,l3). Enquanto usamos [ ] para acessar uma posi¸c˜ao de um array, para acessar as posi¸c˜oes de uma lista usaremos o comando [[ ]]. Dessa forma, l3[[2]] deve retornar o array c(1,1,1,1), que est´a alocado na segunda posi¸c˜ao da lista l3. Para saber quantos objetos est˜ao guardados dentro de uma lista tamb´em podemos usar o comando length(). Dessa forma length(l1) deve retornar 0, length(l2) deve retornar 3, length(l3) deve retornar 4 e length(l4) deve retornar 3.
Pergunta: Se digitarmos length(l3[[2]]), qual a resposta retornada?
Da mesma forma que os arrays, novas posi¸c˜oes de uma lista podem ser alocadas. No caso das listas usaremos o comando [[ ]] para isso. Al´em de alocar novas posi¸c˜oes ele tamb´em serve para modificar posi¸c˜oes j´a existentes. Ent˜ao, se digitarmos l2[[4]]<- c(1,2,3) a lista l2 passa a guardar na posi¸c˜ao 4 um array de tamanho 3 com os n´umeros 1,2 e 3. Para saber mais sobre a classe "list" consulte o help do R atrav´es do comando help(list).
Departamento de Estat´ıstica - UFF 6
Objetos e Classes
(c) Crie um array z onde cada posi¸c˜ao de z ´e um objeto da classe "logic". A posi¸c˜ao i de z vai guardar TRUE se a[i] for igual a b[i] e FALSE caso contr´ario. (d) Crie um array w onde cada posi¸c˜ao de w ´e um objeto da classe "logic". A posi¸c˜ao i de w vai guardar TRUE se c[i] for maior que b[i] e FALSE caso contr´ario.
1.5 No R j´a exitem alguns objetos pr´e-definidos que s˜ao chamados de constantes. Como exemplo temos a constante pi, j´a usada no exerc´ıcio (1), e os arrays letters e LETTERS: sequˆencias com as letras min´usculas e mai´usculas do alfabeto.
(a) Primeiro digite letters e LETTERS para como s˜ao exatamente esses objetos. (b) Qual a classe dos objetos letters e LETTERS? Primeiro tente responder sem usar o comando class e depois verifique a sua resposta usando tal comando. (c) Sem contar, como podemos encontrar o tamanho dos arrays letters e LETTERS? Qual o tamanho deles? (d) Se digitarmos a<-c(LETTERS,letters) qual a classe do objeto a, qual o seu tamanho e como ´e este objeto. Tente responder sem digitar e depois use o prompt para verificar a sua resposta. (e) Se digitarmos b<-paste(LETTERS,letters) qual a classe do objeto b, qual o seu tamanho e como ´e este objeto. Tente responder sem digitar e depois use o prompt para verificar a sua resposta.
1.6 Crie as seguintes matrizes no R:
(a) [,1] [,2] [1,] 1 101 [2,] 2 102 [3,] 3 103 [4,] 4 104
(b) [,1] [,2] [,3] [,4] [1,] 1 2 3 4 [2,] 101 102 103 104
(c) [,1] [,2] [1,] 0 0 [2,] 0 0 [3,] 0 0
(d) [,1] [,2] [,3] [1,] 1 1 1 [2,] 1 1 1 [3,] 1 1 1
Fa¸ca os itens (c) e (d) sem usar um array cheio de 0’s ou 1’s.
1.7 Digite no prompt do R o seguinte comando:
A<-matrix(c(1,2,3,4,5,6,7,8,9,10,11,12),4,3) Sem contar, usando os comandos da classe "matrix" que fornece as dimens˜oes de uma matriz, encontre o n´umero de linhas e o n´umero de colunas de A.
1.8 (a) Crie uma lista chamada minha_lista com 4 elementos. O primeiro elemento ´e o seu nome, o segundo sua idade, o terceiro um array que guarda suas medidas (altura e peso, nessa ordem) e o quarto elemento ´e outro array que guarda TRUE para as respostas afirmativas e FALSE para as respostas negativas das seguintes
Departamento de Estat´ıstica - UFF 8
Objetos e Classes
perguntas: (i) Vocˆe j´a estagiou? ; (ii) Vocˆe j´a participou de algum projeto como volunt´ario? ; (iii) Vocˆe tem interesse em assuntos relacionados ao meio ambiente?. (b) A partir do objeto minha_lista criado acesse o seu nome. (c) A partir do objeto minha_lista criado acesse a sua idade. (d) A partir do objeto minha_lista criado acesse a sua altura. (e) A partir do objeto minha_lista criado acesse o seu peso. (f) A partir do objeto minha_lista criado acesse a resposta para a pergunta “Vocˆe tem interesse em assuntos relacionados ao meio ambiente?”.
1.9 (a) Refa¸ca o item (a) do exerc´ıcios anterior agora com os dados de um amigo ou dados fict´ıcios. Chame essa nova lista de lista_2. (b) Crie agora outra lista com 2 objetos, vamos cham´a-la de dados_alunos. O primeiro objeto dessa lista ´e a lista criada no exerc´ıcio anterior, minha_lista, e o segundo objeto ´e a lista criada no primeiro item desse exerc´ıcio, lista_2. (c) A partir do objeto dados_alunos criado acesse o seu nome. (d) A partir do objeto dados_alunos criado acesse o nome do seu amigo. (e) A partir do objeto dados_alunos criado acesse a sua altura. (f) A partir do objeto dados_alunos criado acesse a resposta do seu amigo para a pergunta “Vocˆe j´a estagiou?”.
1.10 Qual a diferen¸ca entre os objeto obj1, obj2 e obj3 definidos a seguir?
obj1 <- list(1,2,3) obj2 <- list(c(1,2,3)) obj3 <- c(1,2,3)
Departamento de Estat´ıstica - UFF 9
Controle de Fluxo
Considere agora a seguinte sequˆencia de comandos:
x <- 3 if (x > 2){
Qual o valor da vari´avel y ao final desse c´odigo? Respondeu certo quem disse 6. O controle de fluxo if/else ser´a usado na maioria das vezes dentro de fun¸c˜oes, como veremos na pr´oxima semana.
2.2 for
Sintaxe:
for(i in a:b){ tarefas }
Descri¸c˜ao:
i = nome da vari´avel do loop ou la¸co. a e b = valores inteiros. No in´ıcio do loop a vari´avel i recebe o valor a e ´e incrementada (ou decrementada, se a>b) at´e chegar no valor b, que ´e o valor final da vari´avel i. As tarefas descritas dentro das chaves s˜ao executadas para cada valor de i entre a e b.
Veja a seguir um exemplo de como usar o for.
y<- for(i in 1:10){
Ao final do comando qual o valor guardado na vari´avel y? Antes de responder vamos tentar entender cada passo. Veja que y come¸ca com o valor 0. Quando i=1, y ´e incrementado de 1 unidade e passa a guardar o valor 0+1=1. Quando i=2, y ´e incrementado de mais 1 unidade e passa a guardar o valor 1+1=2. Assim por diante at´e que temos i=10, quando y recebe seu ´ultimo incremente e passa a guardar o valor 10. Veja outro exemplo.
x<- for(var in 2:5){
E agora, ao final do comando qual o valor guardado na vari´avel x? Vamos novamente entender cada passo que est´a sendo realizado. Veja que x come¸ca guardando o valor 3. Na primeira itera¸c˜ao do for a vari´avel var assume o valor 2 e dessa forma o valor de x ´e atualizado para 3+2=5. Na segunda itera¸c˜ao var assume o valor 3 e assim o valor de x ´e atualizado para 5+3=8. Na itera¸c˜ao seguinte
Departamento de Estat´ıstica - UFF 11
Controle de Fluxo
var assume o valor 4 e x ´e atualizado para 8+4=12. Na ´ultima itera¸c˜ao var assume o valor 5 e ent˜ao o valor de x recebe a sua ´ultima atualiza¸c˜ao: x = 12+5=17. Sendo assim seu valor final igual a 17. Para terminar de falar do for vale a pena apresentar um exemplo onde dois loops s˜ao combinados, um dentro do outro. Suponha que temos uma matriz 5 × 5 cheia de zeros e queremos preencher cada posi¸c˜ao dessa matriz com o n´umero 1. O c´odigo a seguir executa essa tarefa.
M <- matrix(0,ncol=5,nrow=5) for(i in 1:5){
Ao final das linhas de comando descritas acima a matriz M, que foi iniciada como uma matriz nula, passa a ser uma matriz com todas as posi¸c˜oes iguais a 1. Veja que para isso foi preciso usar dois comandos for, um para controlar o ´ındice das linhas e o outro para controlar o ´ındice das colunas. Quando um for ´e usado dentro do outro ´e preciso tomar cuidado, pois a vari´avel de um deve ser diferente da vari´avel do outro. Para o exemplo acima usamos as vari´aveis i e j. E como ficaria o c´odigo se quis´essemos preencher cada posi¸c˜ao de uma matriz com o n´umero que indica a sua linha? Isso pode ser feito como no exemplo abaixo.
M <- matrix(0,ncol=5,nrow=5) for(i in 1:5){
Veja que a ´unica diferen¸ca com rela¸c˜ao ao ´ultimo c´odigo ´e que agora em vez da posi¸c˜ao (i, j) da matriz receber o n´umero 1 ela ir´a receber o n´umero i. Implemente o exemplo no R e veja como fica a matriz M ao final dessa sequˆencia de comandos.
2.3 while
Sintaxe:
while (afirma¸c~ao){ tarefas }
Descri¸c˜ao:
Realiza as tarefas descritas dentro das chaves enquanto a afirma¸c˜ao for verdadeira. A afirma¸c˜ao tem que ser um objeto da classe "logical".
Um detalhe importante para o controle de fluxo while ´e que as tarefas devem modificar a afirma¸c˜ao de forma a garantir que em algum momento a afirma¸c˜ao vire falsa, se n˜ao vamos entrar em loop infinito. Veja mais detalhes nos exemplos a seguir. A sequˆencia de comandos a seguir usa o controle de fluxo while para criar um vetor com os n´umeros de 1 at´e 100.
Departamento de Estat´ıstica - UFF 12
Controle de Fluxo
x <- 100 for(i in 1:10){
Quais os valores das vari´aveis x e i ao final desse c´odigo? Vamos tentar acompanhar o passo-a-passo feito pelo computador para responder essa pergunta. Quando o for come¸ca a vari´avel x guarda o valor 100 e a vari´avel i o valor 1. Na primeira linha de comando dentro do for x passa a assumir o valor 100 + 100 × 1 = 200. Em seguida a condi¸c˜ao x>1000 ´e testada e como ela ´e falsa o processo n˜ao ´e interrompido. Na segunda itera¸c˜ao do for a vari´avel x come¸ca com o valor 200 e i com o valor 2. Logo na primeira linha o valor de x ´e atualizado para 200 + 200 × 2 = 600. Novamente, como a condi¸c˜ao testada no if n˜ao ´e falsa o processo n˜ao ´e interrompido. No in´ıcio da terceira itera¸c˜ao temos x=600 e i=3. Quando o valor de x ´e atualizado essa vari´avel passa a guardar o valor 600 + 600 × 3 = 2400. E nesse momento que a condi¸´ c˜ao testada passa a ser verdadeira, x>1000, e ent˜ao o processo ´e interrompido. Logo, ao final desse for a vari´avel x guarda o valor 2400 e a vari´avel i guarda o valor
Departamento de Estat´ıstica - UFF 14
Controle de Fluxo
Exerc´ıcios - 2a^ Semana
2.1 Primeiro guarde nas vari´aveis a, b e c o tamanho dos lados de um triangulo qualquer. Em seguida implemente um c´odigo no R que imprime na tela uma mensagem infor- mando se o triˆangulo em quest˜ao ´e equil´atero, is´osceles ou escaleno. Teste o c´odigo implementado para diferentes valores de a, b e c.
2.2 Para cada item a seguir implemente um c´odigo no R para encontrar o que se pede. N˜ao use os comandos seq ou algo parecido. Dica: Comece com um vetor nulo e use o(s) controle(s) de fluxo que achar adequado para preenchˆe-lo.
(a) A sequˆencia com os 100 primeiros m´ultiplos de 3. (b) A sequˆencia com todos os m´ultiplos de 3 menores que 100. (c) A sequˆencia com os 100 primeiros n´umeros ´ımpares.
2.3 Usando os controles de fluxo vistos em sala de aula, fa¸ca o que se pede. Dica: a partir do segundo item vai ser preciso usar dois loops, um dentro do outro.
(a) Primeiro crie uma matriz 10 × 10 nula. Em seguida, usando um loop, preencha toda a sua primeira linha com o n´umero 1. (b) Comece novamente com uma matriz 10 × 10 nula. Preencha cada uma de suas linhas com o n´umero que indica a linha em quest˜ao. Por exemplo, a primeira linha deve ser preenchido com 1, a segunda com 2 e assim por diante, at´e a d´ecima linha que deve ser preenchida com 10. (c) Agora comece com uma matriz 100×100 nula e implemente um loop que preenche cada coluna com o n´umero correspondente da coluna, isto ´e, a primeira coluna com o n´umero 1 e assim por diante. (d) Crie uma matriz 100 × 100 tal que as posi¸c˜oes em linhas pares recebem o n´umero 2 e as posi¸c˜oes em linhas ´ımpares o n´umero 1.
2.4 Comece cada item a seguir com uma matriz 100 × 100 nula e n˜ao use o comando seq ou um vetor pronto.
(a) Crie uma matriz diagonal 100 × 100 cujos elementos da diagonal principal s˜ao os n´umeros de 1 at´e 100 em ordem crescente. (b) Crie uma matriz diagonal 100 × 100 cujos elementos da diagonal principal s˜ao os n´umeros de 1 at´e 100 em ordem decrescente.
2.5 Usando os loops vistos em sala de aula crie as listas definidas em cada item a seguir.
(a) L1 ´e uma lista com 10 posi¸c˜oes tal que cada posi¸c˜ao i dessa lista guarda o n´umero i. (b) L2 ´e uma lista com 10 posi¸c˜oes tal que cada posi¸c˜ao i dessa lista guarda um vetor de tamanho i com todas as posi¸c˜oes iguais a 1. (c) L3 ´e uma lista com 10 posi¸c˜oes tal que cada posi¸c˜ao i dessa lista guarda um vetor com os 10 primeiros m´ultiplos de i. (d) L4 ´e uma lista com 10 posi¸c˜oes tal que cada posi¸c˜ao i dessa lista guarda um vetor com os i primeiros m´ultiplos de 2.
Departamento de Estat´ıstica - UFF 15