---
title: "Lista de exercícios - Curso de R para DS"
output: learnr::tutorial
runtime: shiny_prerendered
---

```{r setup, include=FALSE}
library(learnr)
knitr::opts_chunk$set(echo = FALSE)
```


## Aula 1

### Criar tabelas a partir de vetores e matrizes


#### Crie um vetor chamado `vetor_notas` com notas pares de 2 a 10:

```{r vetor-notas, exercise=TRUE, exercise.eval=FALSE}
# Seu código aqui
```

```{r vetor-notas-hint-1}
# Dica: Utilizar a função c() (combine)

vetor_notas <- c()
```

```{r vetor-notas-hint-2}
# Solução: Adicionar os valores separados por vírgula dentro da função c()

vetor_notas <- c(2, 4, 6, 8, 10)
```

#### Crie uma matriz 3x3 chamada `minha_matriz` com valores de 1 a 9, por linha, contendo 3 linhas:

```{r matriz-exercicio, exercise=TRUE, exercise.eval=FALSE}
# Seu código aqui
```

```{r matriz-exercicio-hint-1}
# Dica: Utilizar a função matrix() com os argumentos necessários

minha_matriz <- matrix(data = NA, nrow = 1, byrow = FALSE)
```

```{r matriz-exercicio-hint-2}
# Solução: Usar um vetor numérico como dados, definir o "nrow" igual a 3, e o "byrow" como verdadeiro

minha_matriz <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow = 3, byrow = TRUE)
```

### Criar variáveis


```{r variaveis-quiz}
quiz(
  question("Qual é a maneira correta de criar uma variável chamada 'idade' com valor 25?",
    answer("variavel <- 25"),
    answer("idade = 25"),
    answer("idade <- 25", correct = TRUE),
    answer("25 -> idade"),
    allow_retry = TRUE
  )
)
```

### Exibir os valores das variáveis

```{r exibir-valores, echo = FALSE}
question_checkbox(
  "Quais dos comandos a seguir são usados para exibir o valor da variável 'resultado'?",
  answer("print(resultado)", correct = TRUE),
  answer("cat(resultado)", correct = TRUE),
  answer("display(resultado)"),
  answer("paste(resultado)", correct = TRUE),
  answer("write(resultado)"),
  random_answer_order = TRUE,
  allow_retry = TRUE,
  try_again = "Certifique-se de selecionar todos os comandos corretos!"
)
```

### Nomear vetores e matrizes

#### Nomeie as linhas e colunas da matriz de salários abaixo. Utilize os nomes "João", "Maria" e "Pedro" para as linhas e os nomes "Jan", "Fev" e "Mar" para as colunas: 

```{r nomear-vetores, exercise = TRUE, exercise.blanks = "___"}
matriz_salarios <- matriz(c(8200, 4400, 3800, 6500, 2600, 3500, 7100, 9000, 5200), nrow = 3, byrow = TRUE)

```

```{r nomear-vetores-hint-1}
# Dica: Criar os vetores contendo os nomes das pessoas e dos meses

nomes_linhas <- c("João", "Maria", "Pedro")
nomes_colunas <- c("Jan", "Fev", "Mar")
```

```{r nomear-vetores-hint-2}
# Solução: Aplicar as funções "rownames" e "colnames" para atribuir os vetores contendo os nomes das linhas e colunas

rownames(matriz_salarios) <- nomes_linhas
colnames(matriz_salarios) <- nomes_colunas
```


## Aula 2

### Indexação de vetores e matrizes

#### Considere o vetor `numeros` abaixo. Acesse o terceiro elemento do vetor.

```{r indexacao-vetor, exercise=TRUE, exercise.eval=FALSE}
numeros <- c(10, 20, 30, 40, 50)
# Seu código aqui
```

```{r indexacao-vetor-hint-1}
# Dica: Adicionar índice numérico entre os colchetes

numeros[___]
```

```{r indexacao-vetor-hint-2}
# Solução: Utilizar índice numérico 3

numeros[3]
```
### Somar linhas e colunas

#### Considere a matriz `minha_matriz` abaixo. Escolha a opção correta para calcular a soma das colunas.

```{r soma-colunas-quiz}
minha_matriz <- matrix(1:9, nrow = 3, byrow = TRUE)
quiz(
  question("Como calcular a soma das colunas da matriz 'minha_matriz'?",
    answer("rowSums(minha_matriz)"),
    answer("sum(minha_matriz, axis = 2)"),
    answer("colSums(minha_matriz)", correct = TRUE),
    answer("apply(minha_matriz, 2, sum)"),
    allow_retry = TRUE
  )
)
```

### Adicionar linhas e colunas nas matrizes com as funções rbind() e cbind()

```{r adicionar-linhas-colunas, echo = FALSE}
question_checkbox(
  "Quais das funções a seguir são usadas para adicionar linhas e colunas em matrizes?",
  answer("rbind()", correct = TRUE),
  answer("cbind()", correct = TRUE),
  answer("addRow()"),
  answer("addColumn()"),
  answer("merge()"),
  random_answer_order = TRUE,
  allow_retry = TRUE,
  try_again = "Certifique-se de selecionar todas as funções corretas!"
)
```

### Criar tabelas a partir de vetores e matrizes

#### Crie uma matriz chamada 'tabela' com duas colunas e duas linhas



```{r criar-tabela, exercise = TRUE, exercise.blanks = "___"}
tabela <- matrix(c(1, 2, ___, ___), nrow = ___, byrow = TRUE)
```

```{r criar-tabela-solution}
# Solução: Adicionar valores restantes da matrix, definir "nrow" com 2, e "byrow" como verdadeiro

tabela <- matrix(c(1, 2, 3, 4), nrow = 2, byrow = TRUE)
```

### Nomear vetores e matrizes

#### Considere o vetor `nomes` abaixo. Escolha a opção correta para atribuir nomes aos elementos do vetor.

```{r nomear-vetor-quiz}
nomes <- c("Ana", "Bob", "Charlie", "David")
quiz(
  question("Como atribuir nomes aos elementos do vetor 'nomes'?",
    answer("names(nomes) <- c('Ana', 'Bob', 'Charlie', 'David')", correct = TRUE),
    answer("nomes.names <- c('Ana', 'Bob', 'Charlie', 'David')"),
    answer("nomes <- c('Ana', 'Bob', 'Charlie', 'David'); nomes_names"),
    answer("nomes <- c('Ana', 'Bob', 'Charlie', 'David'); names(nomes) <- nomes", correct = TRUE),
    allow_retry = TRUE
  )
)
```
