Utilizando a função obrigatorios(), obtém-se os exercícios designados, expostos na tabela a seguir.

Seção Página Exercícios
6.1 107 a
6.2 113 b
6.3 125 b,c
8.1 161 b,c


Exercícios

Seção 6.1


Item a

Armazene o seguinte vetor:

foo <- c(13563,-14156,-14319,16981,12921,11979,9568,8833,-12968,8133)

Faça o seguinte:

  1. Imprima todos os elementos de foo que, quando elevados à potência 75, são não-infinitos;
  2. Retorne os elementos de foo, exceto aqueles que resultam em infinito negativo quando elevado à potência 75.
foo <- c(13563,-14156,-14319,16981,12921,11979,9568,8833,-12968,8133)

#i
infinitos <- foo^75
foo[is.infinite(infinitos) == FALSE]
## [1] 11979  9568  8833  8133
#ii
foo[infinitos != -Inf]
## [1] 13563 16981 12921 11979  9568  8833  8133

Seção 6.2


Item b

Crie e armazene a lista contendo um único membro: o vetor c(7,7,NA,3,NA,1,1,5,NA). Faça o seguinte:

  1. Nomeie esse membro como “alpha”;
  2. Confirme que a lista não tem um membro chamado “beta” usando a função lógica adequada;
  3. Adicione um novo membro chamado “beta”, que é o vetor obtido identificando os índices dos elementos de alpha que são NA
#i
lista <- list(alpha = c(7,7,NA,3,NA,1,1,5,NA))

#ii
is.null(lista$beta)
## [1] TRUE
#iii
lista$beta <- lista$alpha[which(is.na(lista$alpha))]

lista
## $alpha
## [1]  7  7 NA  3 NA  1  1  5 NA
## 
## $beta
## [1] NA NA NA


Seção 6.3


Item b

Para cada objeto criado abaixo, ache a soma de chamar as funções is.numeric() e is.integer() separadamente – por exemplo, is.numeric(foo)+is.integer(foo).

foo <- array(data=1:36,dim=c(3,3,4))
bar <- as.vector(foo)
baz <- as.character(bar)
qux <- as.factor(baz)
quux <- bar+c(-0.1,0.1)

somaf <- function(x){is.numeric(x)+is.integer(x)}

fator <- factor(c(somaf(foo),somaf(bar), somaf(baz), somaf(qux), somaf(quux)))

fator
## [1] 2 2 0 0 1
## Levels: 0 1 2
as.numeric(fator)
## [1] 3 3 1 1 2


Fica evidente que, ao converter o vetor de fator para um vetor numérico, os elementos são convertidos para os índices dos níveis disponíveis que, em R, tem início em 1.


Item c

Transforme a matriz 3x4 em um vetor de caracteres.

mat <- matrix(c(2:13), nrow = 3)


as.character(mat)
##  [1] "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10" "11" "12" "13"


Seção 8.1


Item b

Instale o pacote car e acesse a base de dados Duncan e seu arquivo de suporte. Faça o seguinte:

  1. Projete education no eixo x e income no eixo y, com ambos os eixos fixados em [1, 100]. Atribua nomes aos eixos. Para trabalhos com prestígio menores ou iguais a 80, use um círculo vazio de borda preta como o ponto de dado. Para os demais, use um ponto maciço azul.
  2. Adicione uma legenda explicando a diferença entre os dois tipos de ponto e salve um arquivo .png da imagem de 500 x 500 pixels.

Dentro dos chunks abaixo há comentários indicando as linhas que deveriam ser executadas caso se desejasse salvar a figura conforme as configurações desejadas.

library(car)
data("Duncan")

dun_prest <- subset(Duncan, prestige >= 80)

#executar as linhas comentadas abaixo para salvar:
#png(filename = <"SUBSTITUIR POR PATH">, width = 500, height = 500)

plot(Duncan$education, Duncan$income, ylab = "Eixo de pé - income", xlab = "Eixo deitadis - education", xlim = c(1, 100), ylim = c(1, 100), main = "Base de dados Duncan - dispersão em R base", sub = "Pontos azuis indicam indivíduos com prestígio maior ou igual a 80")
legend("topleft", legend = c("Prestígio >= 80", "Prestígio < 80"),pch = c(16,1),col = c("blue","black"))
points(dun_prest$education, dun_prest$income, pch = 19, col = "blue")

#dev.off()


Item c

Crie uma lista chamada exer que contenha as bases: quakes, q.5dframe e Duncan. Faça o seguinte:

  1. Escreva a o objeto da lista em disco chamada Exercise8-1.txt
  2. Leia Exercise8-1.txt de volta para o espaço de trabalho; chame o objeto resultante list.of.dataframes. Verifique que esse objeto de fato contem três objetos tipo dataframe.

Os comentários abaixo da criação indicam os passos necessários tanto para escrever como para ler o arquivo conforme as instruções.

data("quakes")

exer = list(
  quakes = quakes,
  q.5dframe = subset(quakes, mag >= 5),
  Duncan = Duncan
)

# dput(exer, file = <"PATH.txt">)
# 
# list.of.dataframes <- dget(file = <"PATH.txt">)

str(exer)
## List of 3
##  $ quakes   :'data.frame':   1000 obs. of  5 variables:
##   ..$ lat     : num [1:1000] -20.4 -20.6 -26 -18 -20.4 ...
##   ..$ long    : num [1:1000] 182 181 184 182 182 ...
##   ..$ depth   : int [1:1000] 562 650 42 626 649 195 82 194 211 622 ...
##   ..$ mag     : num [1:1000] 4.8 4.2 5.4 4.1 4 4 4.8 4.4 4.7 4.3 ...
##   ..$ stations: int [1:1000] 41 15 43 19 11 12 43 15 35 19 ...
##  $ q.5dframe:'data.frame':   198 obs. of  5 variables:
##   ..$ lat     : num [1:198] -26 -20.7 -13.6 -19.7 -16.5 ...
##   ..$ long    : num [1:198] 184 170 166 180 181 ...
##   ..$ depth   : int [1:198] 42 139 50 431 498 129 613 627 40 506 ...
##   ..$ mag     : num [1:198] 5.4 6.1 6 5.4 5.2 5.1 5 5 5.5 5.2 ...
##   ..$ stations: int [1:198] 43 94 83 57 79 73 61 45 91 75 ...
##  $ Duncan   :'data.frame':   45 obs. of  4 variables:
##   ..$ type     : Factor w/ 3 levels "bc","prof","wc": 2 2 2 2 2 2 2 2 3 2 ...
##   ..$ income   : int [1:45] 62 72 75 55 64 21 64 80 67 72 ...
##   ..$ education: int [1:45] 86 76 92 90 86 84 93 100 87 86 ...
##   ..$ prestige : int [1:45] 82 83 90 76 90 87 93 90 52 88 ...