Questão 1
- Dadas 3 variáveis com valores numéricos, apresentar o resultado da
soma das combinações dois a dois destes três números. Por exemplo,
variáveis A, B e C, mostrar A + B, A + C, B + C.
A <- 2
B <- 5
C <- 7
for (i in 1:3) {
if (i == 1) {
resultado <- A + B
mensagem <- paste("A + B = ", resultado)
} else if (i == 2) {
resultado <- A + C
mensagem <- paste("A + C = ", resultado)
} else if (i == 3 ){
resultado <- B + C
mensagem <- paste("B + C = ", resultado)
}
cat(mensagem, "\n")
}
## A + B = 7
## A + C = 9
## B + C = 12
Questão 2
- Definir duas variáveis A e B e trocar seus valores. Ex: Entrada: A=6
e B=8 Saída: A=8 e B=6.
A <- 6
B <- 8
for (i in 1:2) {
if (i == 1) {
temp <- A
A <- B
} else {
B <- temp
}
}
cat("A =", A, "\n")
## A = 8
cat("B =", B, "\n")
## B = 6
Questão 3
- Converter uma temperatura de Fahrenheit para Centígrados. C = (F -
32) * ( 5 / 9 )
F <- 75
C <- 0
for (i in 1:2) {
if (i == 1) {
C <- (F - 32) * (5 / 9)
} else {
C <- (F - 30) / 2
}
}
cat("A temperatura em Celsius é:", C, "\n")
## A temperatura em Celsius é: 22.5
Questão 4
- Escrever um algoritmo que defina um número X e calcule:
- X^3- 4
- O resto da divisão de X / 3
- X^(x/3) + 2
- Raiz quadrada de X^2
# a)
X <- 7
result <- 0
for (i in 1:2) {
if (i == 1) {
result <- X^3
} else {
result <- result - 4
}
}
cat("O resultado de (X^3) - 4 é:", result, "\n")
## O resultado de (X^3) - 4 é: 339
# b)
X <- 10
resto <- 0
if (X >= 3) {
for (i in 3:X) {
resto <- i %% 3
}
} else {
resto <- X
}
cat("O resto da divisão de", X, "por 3 é", resto)
## O resto da divisão de 10 por 3 é 1
# c)
X <- 5
resultado <- 0
if (X >= 3) {
for (i in 3:X) {
resultado <- X^(X/3) + 2
}
} else {
resultado <- X^(X/3) + 2
}
cat("O resultado de X^(X/3)) + 2 é", resultado)
## O resultado de X^(X/3)) + 2 é 16.62009
# d)
a <- 1
b <- 2
tolerancia <- 1e-6
while (abs(b - a) > tolerancia) {
c <- (a + b) / 2
fc <- c^2 - 2
if (fc == 0 || abs(fc) < tolerancia) {
break
} else if (fc > 0) {
b <- c
} else {
a <- c
}
}
cat("Raiz quadrada de 2 =", c, "\n")
## Raiz quadrada de 2 = 1.414214
Questão 5
- Elabore um algoritmo que:
- Crie um vetor com uma sequência de 10 números.
- Faça um loop para calcular a soma dos números do vetor.
- Utilize o comando “vetor <- c(1:10)” para criar o vetor.
- Utilize o comando “for( i in 1:10) { …comandos}” para realizar a
soma.
- Referencie os valores do vetor com o comando: “vetor[i]”, onde “i” é
o índice referência (número) Ex. vetor: 1,2,3,4,5,6,7,8,9,10 | Soma dos
números = 55.
# a) Crie um vetor com uma sequência de 10 números.
vetor <- numeric(10)
for(i in 1:10){
if(i <= 5){
vetor[i] <- i * 2
}
else{
vetor[i] <- (i - 5) * 2 - 1
}
}
print(sort(vetor))
## [1] 1 2 3 4 5 6 7 8 9 10
# b) Faça um loop para calcular a soma dos números do vetor
vetor <- 1:10
soma <- 0
for (i in 1:length(vetor)) {
soma <- soma + vetor[i]
}
print(soma)
## [1] 55
# c) Utilize o comando “vetor <- c(1:10)” para criar o vetor.
vetor <- c(1:10)
i <- length(vetor)
while (i >= 1) {
print(vetor[i])
i <- i - 1
}
## [1] 10
## [1] 9
## [1] 8
## [1] 7
## [1] 6
## [1] 5
## [1] 4
## [1] 3
## [1] 2
## [1] 1
# d) Utilize o comando “for( i in 1:10) { ...comandos}” para realizar a soma.
soma <- 0
for (i in 1:10) {
soma <- soma + i
}
print(soma)
## [1] 55
# e) Referencie os valores do vetor com o comando: “vetor[i]”, onde “i” é o índice referência
# (número)
vetor <- c(2, 4, 6, 8, 10)
for (i in 1:length(vetor)) {
print(paste("O elemento de índice", i, "é", vetor[i]))
}
## [1] "O elemento de índice 1 é 2"
## [1] "O elemento de índice 2 é 4"
## [1] "O elemento de índice 3 é 6"
## [1] "O elemento de índice 4 é 8"
## [1] "O elemento de índice 5 é 10"
Questão 6
- A partir do exercício anterior, faça a média dos valores contidos no
vetor.
mean(vetor)
## [1] 6
Questão 7
- Crie duas variáveis, x e y. Compare se x é maior que y. Se for,
imprima “x é maior que y”, se não for, imprima “y é maior que x”.
- A sintaxe do comando de comparação é: if (x > y) {comandos…} else
{comandos}
- O comando print(“texto ou variável”) imprime a resposta na
tela.
x <- 10
y <- 5
if (x > y) {
print("x é maior que y")
} else {
print("y é maior que x")
}
## [1] "x é maior que y"
Questão 8
- Repita o exercício “7)” realizando os seguintes ajustes:
- Substitua o sinal de maior (“>”) pelo de menor ou igual (“<=”)
e ajuste dos dizeres da resposta.
x <- 10
y <- 5
if (x <= y) {
print("x é menor ou igual a y")
} else {
print("y é menor que x")
}
## [1] "y é menor que x"
Questão 9
- A partir do exercício “5)”, faça a soma somente dos números
pares.
- Utilize o comando “%%” para identificar o resto da divisão. Ex:
“5%%2”, cinco dividido por dois terá como resto “1”. Ou seja, o
resultado dessa operação será “1”.
- Utilize o comando de decisão “if” para saber se o número é par ou
ímpar
# a) Utilize o comando “%%” para identificar o resto da divisão.
# Ex: “5%%2”, cinco dividido por dois terá como resto “1”.
# Ou seja, o resultado dessa operação será “1”
sequencia <- c(1:10)
soma <- 0
for (i in sequencia) {
if (i %% 2 == 0) {
soma <- soma + i
}
}
print(paste("A soma dos números pares na sequência", soma))
## [1] "A soma dos números pares na sequência 30"
# b) Utilize o comando de decisão “if” para saber se o número é par ou ímpar.
if (soma %% 2 == 0) {
print(paste("O número", soma, "é par"))
} else {
print(paste("O número", soma, "é ímpar"))
}
## [1] "O número 30 é par"
Questão 10
- Faça um algoritmo que calcule e imprima o fatorial de um número
inteiro.
numero <- 5
fatorial <- 1
for (i in 1:numero) {
fatorial <- fatorial * i
}
print(paste("O fatorial de", numero, "é", fatorial))
## [1] "O fatorial de 5 é 120"
Questão 11
- Crie uma matriz 4x4.
- Uma matriz no R comporta somente um tipo de dado (número, texto ou
boleano).
- O comando para criar a matriz é “x <- matrix(data = 1, nrow = 4,
ncol = 4, byrow = TRUE)”
# a) Uma matriz no R comporta somente um tipo de dado (número, texto ou boleano).
matriz <- matrix(rnorm(16,0,1), nrow=4, ncol=4, byrow=TRUE)
print(matriz)
## [,1] [,2] [,3] [,4]
## [1,] 1.3320725 -0.59212615 -0.2529824 0.7945406
## [2,] 0.1637761 0.10240212 -0.2558734 0.1890320
## [3,] -1.8764792 0.01482538 -0.1072513 -0.1791396
## [4,] 0.8343729 1.33149133 0.4271713 -0.2538644
# b) O comando para criar a matriz é “x <- matrix(data = 1, nrow = 4, ncol = 4, byrow = TRUE)”
x <- matrix(data = 1, nrow = 4, ncol = 4, byrow = TRUE)
print(x)
## [,1] [,2] [,3] [,4]
## [1,] 1 1 1 1
## [2,] 1 1 1 1
## [3,] 1 1 1 1
## [4,] 1 1 1 1
Questão 12
- Agora, crie uma matriz com a sequência de 1 a 16.
matriz <- matrix(c(1:12), nrow=4, ncol=4, byrow=TRUE)
## Warning in matrix(c(1:12), nrow = 4, ncol = 4, byrow = TRUE): data length
## differs from size of matrix: [12 != 4 x 4]
print(matriz)
## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
## [2,] 5 6 7 8
## [3,] 9 10 11 12
## [4,] 1 2 3 4
Questão 13
- Transforme essa matriz em um data.frame
- Um data.frame é uma estrutura de dados similar a matriz que pode
conter dados diferentes em suas variáveis.
- Lembre-se que também chamamos as colunas de variáveis e as linhas de
registros.
- Uma variável (coluna) não pode conter dados diferentes. Ou todas as
linhas dessa variável são números, ou todas são texto, ou ainda,
boleanos.
- Utilize o comando “df <- as.data.frame(x)”
# a) Um data.frame é uma estrutura de dados similar a matriz que pode conter dados
# diferentes em suas variáveis.
df <- data.frame(matriz)
df
## X1 X2 X3 X4
## 1 1 2 3 4
## 2 5 6 7 8
## 3 9 10 11 12
## 4 1 2 3 4
# b) Lembre-se que também chamamos as colunas de variáveis e as linhas de registros.
(df)
## X1 X2 X3 X4
## 1 1 2 3 4
## 2 5 6 7 8
## 3 9 10 11 12
## 4 1 2 3 4
# c) Uma variável (coluna) não pode conter dados diferentes.
# Ou todas as linhas dessa variável são números, ou todas são texto, ou ainda, boleanos.
str(df)
## 'data.frame': 4 obs. of 4 variables:
## $ X1: int 1 5 9 1
## $ X2: int 2 6 10 2
## $ X3: int 3 7 11 3
## $ X4: int 4 8 12 4
# d) Utilize o comando “df <- as.data.frame(x)”
df <- as.data.frame(matriz)
df
## V1 V2 V3 V4
## 1 1 2 3 4
## 2 5 6 7 8
## 3 9 10 11 12
## 4 1 2 3 4
Questão 14
- Utilizando os comandos de repetição e decisão (se for necessário),
calcule:
- a média de uma coluna da matriz do exercício “12)”.
- A média de todas as colunas da matriz do exercício “12)”.
- A média de todas as linhas da matriz do exercício “12)”.
- A média dos números pares de todas as colunas da matriz do exercício
“12)”.
- A média dos números ímpares de todas as linhas da matriz do
exercício “12)”.
- A soma da diagonal principal da matriz.
- A soma da diagonal secundária da matriz (desafio).
# a) a média de uma coluna da matriz do exercício “12)”.
matriz <- matrix(c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16), nrow=4, ncol=4, byrow=TRUE)
coluna <- 2
for (i in 1:ncol(matriz)) {
if (!is.na(matriz[i,coluna])) {
media = mean(matriz[,coluna])
}
}
cat("A média da coluna", coluna, "é", media, "\n")
## A média da coluna 2 é 8
# b) A média de todas as colunas da matriz do exercício “12)”.
# criando uma matriz de exemplo
matriz <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16), nrow = 4, ncol = 4)
media_colunas <- numeric(length = ncol(matriz))
for (j in 1:ncol(matriz)) {
soma_coluna <- 0
for (i in 1:nrow(matriz)) {
soma_coluna <- soma_coluna + matriz[i, j]
}
media_colunas[j] <- soma_coluna/nrow(matriz)
}
print(media_colunas)
## [1] 2.5 6.5 10.5 14.5
# c) A média de todas as linhas da matriz do exercício “12)”.
media_linhas <- numeric(length = nrow(matriz))
for (i in 1:nrow(matriz)) {
soma_linha <- 0
for (j in 1:ncol(matriz)) {
soma_linha <- soma_linha + matriz[i, j]
}
media_linhas[i] <- soma_linha/ncol(matriz)
}
print(media_linhas)
## [1] 7 8 9 10
# d) A média dos números pares de todas as colunas
# Criar uma matriz 4x4 com números aleatórios
matriz <- matrix(sample(1:20, 16, replace = TRUE), nrow = 4, ncol = 4)
medias <- c()
for (j in 1:ncol(matriz)) {
soma_pares <- 0
n_pares <- 0
for (i in 1:nrow(matriz)) {
if (matriz[i,j] %% 2 == 0) {
soma_pares <- soma_pares + matriz[i,j]
n_pares <- n_pares + 1
}
}
if (n_pares > 0) {
media_pares <- soma_pares / n_pares
} else {
media_pares <- 0
}
medias <- c(medias, media_pares)
}
print(medias)
## [1] 13.33333 8.00000 16.00000 4.00000
Questão 15
- Repita o exercício “14)” com os dados do data.frame do exercício
“13)”.
df
## V1 V2 V3 V4
## 1 1 2 3 4
## 2 5 6 7 8
## 3 9 10 11 12
## 4 1 2 3 4
medias <- c()
for (j in 1:ncol(df)) {
soma_pares <- 0
n_pares <- 0
for (i in 1:nrow(df)) {
if (matriz[i,j] %% 2 == 0) {
soma_pares <- soma_pares + df[i,j]
n_pares <- n_pares + 1
}
}
if (n_pares > 0) {
media_pares <- soma_pares / n_pares
} else {
media_pares <- 0
}
medias <- c(medias, media_pares)
}
print(medias)
## [1] 3.666667 4.000000 3.000000 4.000000