Exercícios


Questão 1

Defina primeiro os objetos x, y e z como sendo do tipo "numeric" que guardam os valores 0, -1 e 32, respectivamente. Para cada item a seguir defina os novos objetos apresentados a partir de comandos e funções do R. Ao final verifique se os objetos criados guardam o valor que você esperava. Alguns dos resultados podem dar erro, tente justificar o motivo.

x = numeric(1); y = numeric(1);z = numeric(1)
x = 0; y = -1; z = 32

(a). \(a1 = x+y+z, a2 = yz, a3 = \frac{z}{y}\)

a1 = x+y+z;  a2 = y*z; a3 = z/y
paste('a1 =', a1,'  |  ','a2 =', a2,'  |  ','a3 =', a3)
## [1] "a1 = 31   |   a2 = -32   |   a3 = -32"

(b). \(b1 = z^2, b2 = z^3, b3 = z^x\)

b1 = z^2; b2 = z^3; b3 = z^x 
paste('b1 =', b1,'  |  ','b2 =', b2,'  |  ','b3 =', b3)
## [1] "b1 = 1024   |   b2 = 32768   |   b3 = 1"

(c). \(c1 = \sqrt{a1}, c2 = \sqrt{x}, c3 = \sqrt{\frac{b2}{a1}}\)

c1 = sqrt(a1); c2 = sqrt(x); c3 = sqrt(b2/a1)
paste('c1 =', c1,'  |  ','c2 =', c2,'  |  ','c3 =', c3)
## [1] "c1 = 5.56776436283002   |   c2 = 0   |   c3 = 32.5120325120488"

(d). \(d1 = \sqrt[3]{a2}, d2 = \sqrt[4]{-\frac{1}{a3}}, d3 = \sqrt[3]{z^2}\)

d1 = -abs(a2)^(1/3); d2 = (1/-a3)^(1/4); d3 = (z^2)^(1/3)
paste('d1 =', d1,'  |  ','d2 =', d2,'  |  ','d3 =', d3)
## [1] "d1 = -3.1748021039364   |   d2 = 0.420448207626857   |   d3 = 10.079368399159"

(e). \(e1 = |x|, e2 = \sqrt{|a2|}, e3 = |\frac{1}{z}|\)

e1 = abs(x); e2 = sqrt(abs(a2)); e3 = abs(1/z)
paste('e1 =', e1,'  |  ','e2 =', e2,'  |  ','e3 =', e3)
## [1] "e1 = 0   |   e2 = 5.65685424949238   |   e3 = 0.03125"

(f). \(f1 = e^x, f2 = e^{x+y+z}, f3 = e^{a3}\)

f1 = exp(x); f2 = exp(x+y+z); f3 = exp(a3)
paste('f1 =', f1,'  |  ','f2 =', f2,'  |  ','f3 =', f3)
## [1] "f1 = 1   |   f2 = 29048849665247.4   |   f3 = 1.26641655490942e-14"

(g). \(g1 = ln(x), g2 = ln(x+y+z), g3 = ln(yz)\)

g1 = log(x); g2 = log(x+y+z); g3 = log(y*z)
paste('g1 =', g1,'  |  ','g2 =', g2,'  |  ','g3 =', g3)
## [1] "g1 = -Inf   |   g2 = 3.43398720448515   |   g3 = NaN"

(h). \(h1 = \sqrt{π}, h2 = \sqrt{e^{-x^2}}, h3 = \sqrt{3ln({\frac{4}{a3})}}\)

h1 = sqrt(pi); h2 = sqrt(exp((-x^2))); h3 = sqrt(3* log(4/a3)  )
paste('h1 =', h1,'  |  ','h2 =', h2,'  |  ','h3 =', h3)
## [1] "h1 = 1.77245385090552   |   h2 = 1   |   h3 = NaN"

Obs1: Veja que o objeto pi, pré-definido no R, guarda o valor (aproximado) para \(π\).

Obs2: Como podemos encontrar um valor aproximado pelo R para o número irracional \(e\)?

round(exp(1), digits = 2)
## [1] 2.72

Questão 2

Defina ch1="a", ch2="b" e ch3="c", objetos do tipo "character".

ch1="a"; ch2="b" ; ch3="c"

(a). Usando a função paste() a partir de ch1, ch2 e ch3 crie um quarto objeto, também da classe "character", ch4, definido como "a.b.c".

ch4 = paste(ch1,ch2,ch3, sep = '.');ch4
## [1] "a.b.c"

(b). Usando a função paste() a partir de ch1, ch2 e ch3 crie um quinto objeto, também da classe "character", ch5, definido como "abc".

ch5 = paste(ch1,ch2,ch3, sep = '');ch5
## [1] "abc"

(c). Usando o comando == verifique se ch4 e ch5 são iguais ou diferentes.

ch4 == ch5
## [1] FALSE

(d). Usando o comando != verifique se ch4 e ch5 são iguais ou diferentes.

ch4 != ch5
## [1] TRUE

Questão 3

O operador %% fornece o resto da divisão entre dois números, por exemplo, 15%%4 retorna o resto da divisão de 15 por 4, que é 3. Esse comando será bastante usado durante o curso. Faça os itens a seguir primeiros no papel e depois verifique a resposta usando o R.

(a). Qual a resposta para 18%%5, -5%%2, 15%%5 e 8.3%%3?

18%%5; -5%%2; 15%%5; 8.3%%3
## [1] 3
## [1] 1
## [1] 0
## [1] 2.3

(b). Seja a um objeto do tipo "numeric", que não sabemos o valor guardado nele. Sem ver o valor de a, como podemos usar o operador %% para testar se a guarda um número par? Faça o teste no prompt do R e use também os operadores == ou != de forma que a resposta seja TRUE se o número for par e FALSE caso contrários.

a = numeric() ; a = 5
a%%2 == 0
## [1] FALSE
a%%2 != 0
## [1] TRUE

(c). Novamente sem ver o valor de a, como podemos usar o operador %% para testar se a guarda um número inteiro? Faça o teste no prompt do R e use também os operadores == ou != de forma que a resposta seja TRUE se o número for inteiro e FALSE caso contrários.

a = numeric(); a = -5
a%%1 == 0
## [1] TRUE

(d). Novamente sem ver o valor de a, como podemos testar se a guarda um número natural, isto é, inteiro e positivo? Faça o teste no prompt do R de forma que a resposta seja TRUE se o número for natural e FALSE caso contrários.

a = numeric(); a = 5
a%%1 == 0 & a>0
## [1] TRUE

Questão 4

Digite no prompt do R: a<-seq(1:10); b<-seq(1,20,by=2); d<-seq(20,1,by=-2). Usando os operadores +,-,*,/ e também ==,!=,<,> faça o que se pede nos itens a seguir.

a<-seq(1:10); b<-seq(1,20,by=2); d<-seq(20,1,by=-2)

(a). Crie um array x onde cada posição de x é dada pela subtração entre as respectivas posições de b e d.

x = b-d; x
##  [1] -19 -15 -11  -7  -3   1   5   9  13  17

(b). Crie um array y onde cada posição de y é o dobro de cada posição de a.

y = a*2; y
##  [1]  2  4  6  8 10 12 14 16 18 20

.c). Crie um array z onde cada posição de z é um objeto da classe "logical". A i-ésima posição de z vai guardar TRUE se a[i] for igual a b[i] e FALSE caso contrário.

z = logical(); z = a==b; z
##  [1]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

(d). Crie um array w onde cada posição de w é um objeto da classe "logical". A i-ésima posição de w vai guardar TRUE se d[i] for maior que b[i] e FALSE caso contrário.

w = logical(); w = d>b; w
##  [1]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE

Questão 5

No R já exitem alguns objetos pré-definidos que são chamados de constantes. Como exemplo temos a constante pi, já usada no Exercício 1. Tem também os arrays letters e LETTERS, formados pelas letras minúsculas e maiúsculas do alfabeto, que serão usados neste exercício. (a). Primeiro digite letters e LETTERS para ver como são exatamente esses objetos.

letters ; LETTERS
##  [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
## [20] "t" "u" "v" "w" "x" "y" "z"
##  [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
## [20] "T" "U" "V" "W" "X" "Y" "Z"

(b). Qual a classe dos objetos letters e LETTERS? Primeiro tente responder sem usar a função class() e depois verifique a sua resposta usando-a.

class(letters); class(LETTERS)
## [1] "character"
## [1] "character"

(c). Qual a função que podemos usar para encontrar o tamanho dos arrays letters e LETTERS? Use essa função e descubra o tamanho deles.

length(letters); length(LETTERS)
## [1] 26
## [1] 26

(d). Se digitarmos a<-c(LETTERS,letters), qual a classe do objeto a, qual o seu tamanho e como é este objeto? Tente responder antes sem o uso do computador e depois use o R para verificar a sua resposta.

a<-c(LETTERS,letters)
class(a); length(a); a
## [1] "character"
## [1] 52
##  [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
## [20] "T" "U" "V" "W" "X" "Y" "Z" "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l"
## [39] "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
  1. Se digitarmos b<-paste(LETTERS,letters), qual a classe do objeto b, qual o seu tamanho e como é este objeto. Tente responder antes sem o uso do computador e depois use o R para verificar a sua resposta.
b<-paste(LETTERS,letters)
class(b); length(b); b
## [1] "character"
## [1] 26
##  [1] "A a" "B b" "C c" "D d" "E e" "F f" "G g" "H h" "I i" "J j" "K k" "L l"
## [13] "M m" "N n" "O o" "P p" "Q q" "R r" "S s" "T t" "U u" "V v" "W w" "X x"
## [25] "Y y" "Z z"

Questão 6

Crie as seguintes matrizes no R:

(a).

##      [,1] [,2]
## [1,]    1  101
## [2,]    2  102
## [3,]    3  103
## [4,]    4  104
data = c(1,2,3,4,101,102,103,104)
matrix(data, nrow = 4)
##      [,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
matrix(data, nrow = 2, byrow = T)
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]  101  102  103  104

(c).

##      [,1] [,2] [,3]
## [1,]    1    1    1
## [2,]    1    1    1
## [3,]    1    1    1
matrix( rep(1,9), nrow = 3)
##      [,1] [,2] [,3]
## [1,]    1    1    1
## [2,]    1    1    1
## [3,]    1    1    1

Questão 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). Qual as funções que podemos usar para encontrar o número de linhas e colunas da matriz A? Use tais funções e veja como elas funcionam.

A<-matrix(c(1,2,3,4,5,6,7,8,9,10,11,12),4,3); A
##      [,1] [,2] [,3]
## [1,]    1    5    9
## [2,]    2    6   10
## [3,]    3    7   11
## [4,]    4    8   12
paste('Total de Coluna:', ncol(A) ,'e Total de Linhas:', nrow(A) )
## [1] "Total de Coluna: 3 e Total de Linhas: 4"

Questão 8

Crie um objeto do tipo "list" com 4 elementos e dê o nome de minha_lista. O primeiro elemento é o seu nome ("character"). O segundo é sua idade ("numeric"). O terceiro é um array que guarda suas medidas de altura e peso, nessa ordem, em metros ("numeric"). E o quarto elemento é outro array que guarda TRUE para as respostas afirmativas e FALSE para as respostas negativas (“logical”) das seguintes perguntas: (i) Você já estagiou?; (ii) Você já participou de algum projeto como voluntário? (iii) Você tem interesse em assuntos relacionados ao meio ambiente?.

minha_lista = list('Agda Costa', 21, c(1.68,65), c(T,F,F) ); minha_lista
## [[1]]
## [1] "Agda Costa"
## 
## [[2]]
## [1] 21
## 
## [[3]]
## [1]  1.68 65.00
## 
## [[4]]
## [1]  TRUE FALSE FALSE

(a). A partir do objeto minha_lista criado acesse o seu nome.

minha_lista[1]
## [[1]]
## [1] "Agda Costa"

(b). A partir do objeto minha_lista criado acesse a sua idade.

minha_lista[[2]][1]
## [1] 21

(c). A partir do objeto minha_lista criado acesse a sua altura.

minha_lista[[3]][1]
## [1] 1.68

(d). A partir do objeto minha_lista criado acesse o seu peso.

minha_lista[[3]][2]
## [1] 65

(e). A partir do objeto minha_lista criado acesse a resposta para a pergunta: “Você tem interesse em assuntos relacionados ao meio ambiente?”.

minha_lista[[4]][3]
## [1] FALSE

Questão 9

Refaça o exercício anterior agora com os dados de um amigo ou dados fictícios. Chame essa nova lista de lista_2.

Em seguida crie outra lista com 2 objetos, vamos chamá-la de dados_alunos. O primeiro objeto da lista dados_alunos é a lista criada no exercício anterior, a minha_lista, e o segundo objeto é a lista_2. Ou seja, dados_alunos é uma lista de listas.

minha_lista2 = list('Yago Oliveira', 25, c(1.72,82), c(T,T,F) )
dados_alunos = list(minha_lista,minha_lista2)

(a). A partir do objeto dados_alunos criado acesse o seu nome.

dados_alunos[[1]][[1]]
## [1] "Agda Costa"

(b). A partir do objeto dados_alunos criado o nome do seu amigo.

dados_alunos[[2]][[1]][1]
## [1] "Yago Oliveira"

(c). A partir do objeto dados_alunos criado acesse a sua altura.

dados_alunos[[1]][[3]][1]
## [1] 1.68

(d). A partir do objeto dados_alunos criado acesse a resposta do seu amigo para a pergunta “Você já estagiou?”

dados_alunos[[2]][[4]][1]
## [1] TRUE

Questão 10

Qual a diferença 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)

obj1 <- list(1,2,3);obj1 ; obj2 <- list(c(1,2,3));obj2; obj3 <- c(1,2,3);obj3
## [[1]]
## [1] 1
## 
## [[2]]
## [1] 2
## 
## [[3]]
## [1] 3
## [[1]]
## [1] 1 2 3
## [1] 1 2 3

Resposta: Obj1 é uma lista de 3 numeros, o obj2 é um lista com um array de 3 numeros e obj3 é um array


Questão 11

Faça esse exercício sem o computador e depois use o computador para verificar a resposta. Imagine que sejam definidos no R os seguintes objetos: X<-3; Y<-2; Z<-"2"; A<-"X"; B<-X; C<-"A"; D<-paste(A,C); E<-c(A,C); f<-list(A,C). Para cada item abaixo diga se os objetos apresentados são iguais ou não. Caso eles sejam diferentes, explique a diferença entre eles.

X<-3; Y<-2; Z<-"2"; A<-"X"; B<-X; C<-"A"; D<-paste(A,C); E<-c(A,C); f<-list(A,C)

(a). Y e Z

Y == Z
## [1] TRUE

(b). A e B

A == B
## [1] FALSE

Resposta: Porque A recebe o character X que é diferente de B porque B é o número atribuido a X, que é 3, ou seja, “x” != 3

(c). X e B

X == B
## [1] TRUE

(d). A e C

A == C
## [1] FALSE

Resposta: Porque A recebe o character X que é diferente de C porque C é o character A, ou seja, “x” != “a”

(e). D, E e F

D == E 
## [1] FALSE FALSE
E == f
## [1] TRUE TRUE
D == f
## [1] FALSE FALSE

Resposta: Porque D é um character e E é um array com dois character e a variavel f é uma lista com dois character