Capítulo 4 R como Calculadora e Operações Aritméticas

A Estatística está intimamente ligada à Álgebra, especialmente no que diz respeito ao uso de matrizes e vetores para representar conjuntos de dados e variáveis. No R, estas estruturas de dados são amplamente utilizadas para facilitar a manipulação e a análise estatística. Por isso, é importante primeiro entender como o R lida com estas estruturas antes de avançar para comandos estatísticos mais específicos.

4.1 O Prompt do R

O R utiliza uma interface de linha de comando para executar operações e aceitar comandos diretamente. Esta interface é marcada pelo símbolo >, conhecido como o prompt. Quando se digita um comando após o prompt e se pressiona Enter, o R interpreta o comando, executa a operação correspondente e exibe o resultado no ecrã.

print("Meu primeiro comando no R!")
## [1] "Meu primeiro comando no R!"

Nas notas de aula, o código R digitado no console é exibido em caixas cinzentas. Quando se vê o símbolo ## no início de uma linha, isso indica o resultado (output) gerado pelo console R após a execução do código.

No R, o caractere # é utilizado para inserir comentários no código. Qualquer texto que aparece após # na mesma linha é ignorado pelo R durante a execução. Comentários são úteis para adicionar explicações ou anotações no código, como no exemplo abaixo:

# Este é um exemplo de comentário
2 + 2 # O R vai calcular 2 mais 2
## [1] 4

Se conhecer o nome de uma função e desejar aprender mais sobre o seu funcionamento, pode utilizar o comando ? seguido do nome da função para aceder à documentação de ajuda correspondente. Por exemplo:

?sum

Este comando abrirá a página de ajuda para a função sum, que é utilizada para calcular a soma de elementos.

Além disso, o R oferece uma forma prática de visualizar exemplos de como uma função pode ser utilizada. Para ver exemplos de uso de uma função, pode usar o comando example() com o nome da função como argumento:

example(sum)

Este comando mostrará exemplos de aplicação da função sum, ajudando a entender melhor como pode ser usada em diferentes contextos.

4.2 Objetos e Variáveis

Em R, um objeto é uma unidade de armazenamento que pode conter diferentes tipos de dados ou funções, sendo referenciado por um nome. Esses dados podem incluir números, caracteres, vetores, matrizes, data frames, listas ou até mesmo funções. Objetos são criados e manipulados através de comandos, permitindo que seus valores sejam reutilizados em qualquer parte do código. Em resumo, tudo o que é criado ou carregado na sessão do R, como dados ou funções, é considerado um objeto.

4.2.1 O que é uma Variável?

Uma variável é um nome ou identificador associado a um objeto. Quando se cria uma variável, está-se, na verdade, a criar um “rótulo” que aponta para o objeto armazenado na memória. Assim, uma variável é o nome que se utiliza para aceder aos dados ou funções armazenados no objeto. Ela permite manipular e referenciar o objeto de forma conveniente ao longo do seu script ou análise.

4.2.2 Atribuições

  • A expressão x <- 10 cria uma variável chamada x e atribui-lhe o valor 10. Note que o operador de atribuição <- atribui o valor do lado direito à variável do lado esquerdo. O lado esquerdo deve conter apenas um único nome de variável.

  • Também é possível realizar atribuições usando o sinal de igualdade = ou o operador ->. No entanto, para evitar confusões entre o operador de atribuição e o operador de igualdade, é recomendável usar <- para atribuições.

# Atribuição correta 
a <- 10
b <- a + 1
# Atribuição incorreta
10 = a
a + 2 = 10 # Uma atribuição não é uma equação
  • O comando c(1,2,3,4,5) combina os números 1, 2, 3, 4 e 5 em um vetor, criando uma sequência de valores.

  • Vetores podem ser atribuídos a objetos. Por exemplo:

X <- c(2,12,22,32)

Esta linha de código atribui um vetor numérico de comprimento 4 ao objeto X. É importante lembrar que o R distingue entre maiúsculas e minúsculas, o que significa que X e x são considerados dois objetos distintos.

Ao definir objetos no console, está a modificar o espaço de trabalho actual. Para visualizar todas as variáveis e objetos actualmente guardados no seu espaço de trabalho, pode usar o comando:

ls()

No RStudio, a aba Environment exibe todos os objetos e valores presentes no espaço de trabalho.

4.2.3 Regras para definição de variáveis

Os nomes de variáveis em R devem começar com uma letra ou um ponto final (desde que o ponto final seja seguido por uma letra) e podem incluir letras, números, pontos e sublinhados.

  • O nome de uma variável não pode conter espaços ou caracteres especiais (como @, #, $, %). Apenas letras, números, pontos e sublinhados (_) são permitidos. Exemplo de nome válido: nome_cliente2.

  • Ao definir nomes de variáveis, não é permitido usar palavras reservadas do R. Palavras reservadas são termos que têm um significado especial no R e não podem ser redefinidos. Exemplos de palavras reservadas incluem: if, else, for, while, class, FALSE, TRUE, exp, sum.

  • O R diferencia letras maiúsculas de minúsculas, o que significa que fcul e Fcul são tratadas como variáveis diferentes. Uma convenção comum é usar letras minúsculas para nomes de variáveis e separar palavras com sublinhados. Exemplo: faculdade_de_ciencias.

  • Escolha nomes de variáveis que descrevam claramente a sua finalidade para que o código seja mais legível e compreensível. Por exemplo, use nome em vez de x.

idade <- 20
Idade <- 30

Neste exemplo, idade e Idade são duas variáveis diferentes devido à diferenciação entre letras maiúsculas e minúsculas.

4.2.4 Tipos de Dados

Em R, variáveis podem armazenar diferentes tipos de dados, incluindo:

  • Numeric: números inteiros ou decimais. Exemplo: 42, 3.14.
  • Character: sequências de caracteres (texto). Exemplo: "Olá".
  • Logical: valores booleanos que representam verdadeiro ou falso. Exemplo: TRUE, FALSE.
  • Vectors: coleções de elementos do mesmo tipo. Exemplos: c(1, 2, 3) para números, c("a", "b", "c") para caracteres.
  • Data Frames: estruturas de dados tabulares que contêm linhas e colunas, semelhantes a uma tabela de banco de dados ou a uma folha de cálculo.
  • Lists: coleções que podem conter elementos de diferentes tipos, como números, caracteres, vetores, e até mesmo outros data frames.
  • Factors: variáveis categóricas que representam dados categóricos e são armazenadas como inteiros. São especialmente úteis para análises estatísticas que envolvem dados categóricos.
# Numeric
a <- 3.14

# Character
b <- "Programação R"

# Logical
c <- 3 < 2

# Vectors
d <- c(1, 2, 3)

4.2.5 Comandos Importantes

Abaixo estão alguns comandos úteis para manipular variáveis e objetos no R:

ls() # Exibe a lista de variáveis atualmente armazenadas na memória
    
ls.str() # Mostra a estrutura das variáveis armazenadas na memória
    
rm(a) # Remove o objeto 'a' da memória
    
rm(list=ls()) # Remove todos os objetos da memória
    
save.image('nome-do-arquivo.RData') # Salva o espaço de trabalho atual em um arquivo .RData

4.3 Operadores Aritméticos em R

Operador Descrição Exemplo
+ Adiciona dois valores 5 + 2 resulta em 7
- Subtrai dois valores 5 - 2 resulta em 3
* Multiplica dois valores 5 * 2 resulta em 10
/ Divide dois valores (sem arredondamento) 5 / 2 resulta em 2.5
%/% Realiza divisão inteira 5 %/% 2 resulta em 2
%% Retorna o resto da divisão 5 %% 2 resulta em 1
^ Realiza exponenciação 5 ^ 2 resulta em 25

Exemplos:

1+1
## [1] 2

5-2
## [1] 3

5*21
## [1] 105

sqrt(9)
## [1] 3

3^3
## [1] 27

3**3
## [1] 27

log(9)
## [1] 2.197225

log10(9)
## [1] 0.9542425

exp(1)
## [1] 2.718282

# prioridade de resolução
19 + 26 /4 -2 *10
## [1] 5.5

((19 + 26) /(4 -2))*10
## [1] 225

Ao contrário de funções simples como ls(), a maioria das funções no R requer um ou mais argumentos. Nos exemplos acima, utilizamos funções predefinidas do R como sqrt(), log(), log10() e exp(), que aceitam argumentos específicos.

4.3.1 Controle da Quantidade de Dígitos Mostrados

O R permite ajustar a precisão dos números exibidos alterando a configuração global de dígitos. Veja o exemplo a seguir:

exp(1)
## [1] 2.718282

options(digits = 20)
exp(1)
## [1] 2.7182818284590450908

options(digits = 3)
exp(1)
## [1] 2.72

4.3.2 Objetos Predefinidos, Infinito, Indefinido e Valores Ausentes

O R inclui diversos conjuntos de dados predefinidos que podem ser usados para prática e teste de funções. Para visualizar todos os conjuntos de dados disponíveis, pode-se utilizar o seguinte comando:

data()

Este comando exibe uma lista de nomes de objetos para cada conjunto de dados disponível. Esses conjuntos de dados podem ser utilizados diretamente ao simplesmente digitar o nome no console. Por exemplo, ao digitar:

co2

O R exibirá os dados de concentração atmosférica de CO2 coletados em Mauna Loa.

Além dos conjuntos de dados, o R também possui objetos predefinidos que representam constantes matemáticas, como pi para o número \(\pi\) e Inf para o \(\infty\).

pi
## [1] 3.14

1/0  
## [1] Inf

2*Inf
## [1] Inf

-1/0
## [1] -Inf

0/0
## [1] NaN

0*Inf
## [1] NaN

Inf - Inf
## [1] NaN

sqrt(-1)
## Warning in sqrt(-1): NaNs produced
## [1] NaN
    
c(1,2,3,NA,5)
## [1]  1  2  3 NA  5

mean(c(1,2,3,NA,5))
## [1] NA

mean(c(1,2,3,NA,5), na.rm = TRUE)
## [1] 2.75
    
x <- c(1, 2, NaN, 4, 5)
y <- c(1, 2, NA, 4, 5)

# Note que isso não funciona
y == NA
## [1] NA NA NA NA NA

# E isso também não
y == "NA"
## [1] FALSE FALSE    NA FALSE FALSE

is.na(x)
## [1] FALSE FALSE  TRUE FALSE FALSE

is.nan(x) 
## [1] FALSE FALSE  TRUE FALSE FALSE

is.na(y)
## [1] FALSE FALSE  TRUE FALSE FALSE

is.nan(y)
## [1] FALSE FALSE FALSE FALSE FALSE

# Operações com NaN e NA
sum(x)  # Retorna: NaN, porque a soma envolve um NaN
## [1] NaN

sum(y)  # Retorna: NA, porque a soma envolve um NA
## [1] NA
    
sum(x, na.rm = TRUE)  # Retorna: 12, ignora NaN na soma
## [1] 12

sum(y, na.rm = TRUE)  # Retorna: 12, ignora NA na soma
## [1] 12
  • NaN (Not a Number): Representa resultados indefinidos de operações matemáticas. Por exemplo, operações como 0/0 ou sqrt(-1) geram um NaN porque o resultado não é um número real. No R, NaN é tecnicamente um tipo especial de NA que indica especificamente um resultado numérico indefinido.

  • NA (Not Available): Indica dados ausentes ou valores que não estão disponíveis num conjunto de dados. Por exemplo, em um vetor de dados, se um valor está ausente ou não foi medido, ele é representado por NA. Ao contrário de NaN, NA é utilizado para representar qualquer tipo de dado ausente, não apenas valores numéricos.

4.3.3 Lidando com NaN e NA em Operações

Ao trabalhar com dados, é importante saber como lidar com NaN e NA para evitar erros inesperados. Funções como mean() e sum() podem retornar NA ou NaN se contiverem esses valores. Para ignorar NA ou NaN ao realizar cálculos, você pode usar o argumento na.rm = TRUE, que remove os valores ausentes ou indefinidos da operação.

mean(c(1, 2, 3, NA, 5), na.rm = TRUE)  # Calcula a média ignorando NA
## [1] 2.75

sum(x, na.rm = TRUE)  # Soma ignorando NaN
## [1] 12

sum(y, na.rm = TRUE)  # Soma ignorando NA
## [1] 12

4.3.4 Funções Úteis para Detectar NaN e NA

Para verificar a presença de NA ou NaN em um vetor ou conjunto de dados, pode-se usar as funções is.na() e is.nan(). A função is.na() identifica todos os valores que são NA ou NaN, enquanto is.nan() identifica especificamente valores que são NaN. Por exemplo:

is.na(x)
## [1] FALSE FALSE  TRUE FALSE FALSE

is.nan(x) 
## [1] FALSE FALSE  TRUE FALSE FALSE

is.na(y)
## [1] FALSE FALSE  TRUE FALSE FALSE

is.nan(y)
## [1] FALSE FALSE FALSE FALSE FALSE

Essas funções são úteis para limpar e preparar dados antes de realizar análises estatísticas, garantindo que os cálculos sejam precisos e significativos.

4.3.5 Tipagem Dinâmica em R

Em R, o tipo de uma variável é determinado dinamicamente com base no valor atribuído a ela. Isso significa que o R automaticamente define o tipo de dado de uma variável quando lhe é atribuído um valor.

x <- 5         
class(x) 
## [1] "numeric"

y <- "Cinco"   
class(y) 
## [1] "character"

z <- TRUE  
class(z) 
## [1] "logical"
  • A função class() retorna a classe de um objeto em R. A classe de um objeto determina como ele será tratado pelas funções e operações que podem ser aplicadas a ele. Por exemplo, vetores, matrizes, data frames e listas são diferentes classes de objetos em R, cada uma com suas próprias características e métodos.

  • A função typeof() em R é usada para retornar o tipo de armazenamento interno de um objeto. Ela fornece informações detalhadas sobre como os dados são representados na memória do computador.

x <- 1:10
class(x)
## [1] "integer"

typeof(x) 
## [1] "integer"

y <- c(1.1, 2.2, 3.3)
class(y) 
## [1] "numeric"

typeof(y) 
## [1] "double"

z <- data.frame(a = 1:3, b = c("A", "B", "C"))
class(z)
## [1] "data.frame"

typeof(z) 
## [1] "list"

w <- list(a = 1, b = "text")
class(w) 
## [1] "list"

typeof(w) 
## [1] "list"

Neste exemplo, class(x) e typeof(x) ambos retornam “integer” para um vetor de inteiros, enquanto class(y) retorna “numeric” para um vetor de números de ponto flutuante, e typeof(y) retorna “double”, mostrando o tipo específico de armazenamento na memória. Para um data.frame, class(z) retorna “data.frame”, enquanto typeof(z) retorna “list”, indicando que os data frames são armazenados internamente como listas.

4.3.6 Conversão entre Tipos de Dados

Em R, é possível converter uma variável de um tipo de dado para outro usando funções de conversão. Isso é especialmente útil ao trabalhar com dados que podem ter sido importados de fontes externas e precisam ser manipulados ou analisados de diferentes maneiras.

# Convertendo um inteiro em uma string (caractere)
a <- 15
b <- as.character(15)
print(b)
## [1] "15"
    
# Convertendo um número de ponto flutuante (float) em um inteiro
x <- 1.5
y <- as.integer(x)
print(y)
## [1] 1

# Convertendo uma string em um número (float)
z <- "10"
w <- as.numeric(z)
print(w)
## [1] 10

Essas funções de conversão são essenciais quando há necessidade de manipular diferentes tipos de dados de forma eficiente em análises estatísticas e outras operações de programação.

4.4 Funções print(), readline(), paste() e cat()

No R, existem várias funções úteis para exibir, receber e concatenar informações. Aqui estão algumas das mais comuns:

  • print(): Utilizada para exibir valores e resultados de expressões no console. É a função básica para mostrar a saída de dados no R.

  • readline(): Usada para receber entradas do utilizador via teclado. Esta função permite que o script pause e aguarde a entrada do utilizador

  • paste(): Utilizada para concatenar (combinar) sequências de caracteres (strings) com um separador específico entre elas. Por padrão, o separador é um espaço.

  • paste0(): Semelhante a paste(), mas concatena strings sem qualquer separador.

  • cat(): Usada para concatenar e exibir uma ou mais strings ou valores de uma forma direta, sem estruturas de formatação adicionais como aspas. Ao contrário de print(), cat() não retorna o resultado em uma nova linha.

Exemplo 1:

nome1 <- "faculdade"
nome2 <- "ciências"
print(paste(nome1, nome2))
## [1] "faculdade ciências"

Neste exemplo, paste() concatena as duas strings com um espaço entre elas.

Exemplo 2:

# Solicitar entrada do utilizador
n <- readline(prompt = "Digite um número: ")

# Converta a entrada em um valor numérico
n <- as.integer(n)

# Imprima o valor no console
print(n+1)

Aqui, readline() recebe a entrada do utilizador, e as.integer() converte essa entrada para um número inteiro. O resultado é incrementado em 1 e exibido.

Exemplo 3:

# Solicitar entrada do utilizador
nome <- readline(prompt = "Entre com o seu nome: ")
    
# Imprima uma mensagem de saudação
cat("Olá, ",nome, "!")

O uso de cat() aqui é para exibir uma mensagem de saudação que inclui o nome do utilizador.

Exemplo 4:

# Solicitar ao utilizador a entrada numérica
idade <- readline(prompt = "Digite a sua idade: ")
    
# Converta a entrada em um valor numérico
idade <- as.numeric(idade)
    
# Verifique se a entrada é numérica
if (is.na(idade)) {
cat("Entrada inválida. Insira um valor numérico.\n")
} else {
  cat("Você tem ", idade, " anos.\n")
}

Este exemplo mostra como verificar se a entrada é numérica usando is.na() e fornecer feedback apropriado ao utilizador.

Concatenando Strings

result <- paste("Hello", "World")
print(result)
## [1] "Hello World"

Concatenando Múltiplas Strings

result <- paste("Data", "Science", "with", "R")
print(result)
## [1] "Data Science with R"

Concatenando Strings com um Separador Específico

result <- paste("2024", "04", "28", sep="-")
print(result)
## [1] "2024-04-28"

Concatenando Vetores de Strings

first_names <- c("Anna", "Bruno", "Carlos")
last_names <- c("Smith", "Oliveira", "Santos")
result <- paste(first_names, last_names)
print(result)
## [1] "Anna Smith"     "Bruno Oliveira" "Carlos Santos"

Concatene com cada elemento de um vetor

numbers <- 1:3
result <- paste("Number", numbers)
print(result)
## [1] "Number 1" "Number 2" "Number 3"

Usando paste0() para Concatenar sem Espaço

result <- paste0("Hello", "World")
print(result)
## [1] "HelloWorld"

Concatenando Strings com Números

age <- 25
result <- paste("I am", age, "years old")
print(result)
## [1] "I am 25 years old"

4.5 Quizz

  1. O que é o ‘prompt’ do R?
    1. Um símbolo que marca o início de um comando
    1. Um objeto armazenado na memória
    1. Uma função para adicionar números
    1. Um operador lógico
  1. Qual comando é usado para imprimir texto no console no R?
    1. print()
    1. paste()
    1. cat()
    1. readline()
  1. O que o caractere # faz em um script R?
    1. Executa o comando
    1. Cria uma variável
    1. Indica um comentário
    1. Combina dois números
  1. Como você cria um vetor com os números 1 a 5?
    1. c(1 2 3 4 5)
    1. combine(1,2,3,4,5)
    1. c(1,2,3,4,5)
    1. vector(1,2,3,4,5)
  1. O que o operador <- faz no R?
    1. Atribui um valor a uma variável
    1. Compara dois números
    1. Soma dois números
    1. Remove um objeto
  1. Como remover um objeto da memória no R?
    1. delete(x)
    1. remove(x)
    1. rm(x)
    1. clear(x)
  1. Qual operador é usado para divisão inteira em R?
    1. /
    1. %/%
    1. %%
    1. ^
  1. Qual operador retorna o resto da divisão de dois números?
    1. %/%
    1. %%
    1. ^
    1. /
  1. Como você controla a precisão dos números exibidos no console do R?
    1. Usando a função precision()
    1. Alterando a opção options(digits=)
    1. Usando a função format()
    1. Usando o comando round()
  1. Qual função retorna a classe de um objeto no R?
    1. typeof()
    1. class()
    1. str()
    1. is()
  1. O que c() faz no R?
    1. Cria um vetor
    1. Calcula a soma de números
    1. Remove um vetor
    1. Compara dois números
  1. O que a função readline() faz?
    1. Imprime texto no console
    1. Lê uma linha de texto do utilizador
    1. Remove um objeto da memória
    1. Soma dois números
  1. O que paste() faz?
    1. Soma números
    1. Imprime texto sem quebrar linhas
    1. Combina strings
    1. Cria vetores

4.6 Operadores Lógicos e Relacionais

Em R, operadores lógicos e relacionais são utilizados para realizar comparações e tomar decisões com base nos resultados dessas comparações. Esses operadores são fundamentais para a construção de estruturas de controle de fluxo, como instruções condicionais (if, else) e loops (for, while).

4.6.1 Operadores Lógicos

Os operadores lógicos são usados para combinar ou modificar condições lógicas, retornando valores booleanos (TRUE ou FALSE).

  • & (E lógico): Retorna TRUE se todas as expressões forem verdadeiras.

  • | (OU lógico): Retorna TRUE se pelo menos uma das expressões for verdadeira.

  • ! (Não lógico): Inverte o valor de uma expressão booleana, transformando TRUE em FALSE e vice-versa.

Exemplos:

(5 > 3) & (4 > 2)   # Ambas as condições são verdadeiras
## [1] TRUE

(5 < 3) | (4 > 2)   # Apenas uma condição é verdadeira
## [1] TRUE

!(5 > 3)            # Inverte o valor lógico de TRUE para FALSE
## [1] FALSE

4.6.2 Operadores Relacionais

Os operadores relacionais são usados para comparar valores e retornam valores lógicos (TRUE ou FALSE) com base na comparação.

  • a == b: Verifica se “a” é igual a “b”.
  • a != b: Verifica se “a” é diferente de “b”.
  • a > b: Verifica se “a” é maior que “b”.
  • a < b: Verifica se “a” é menor que “b”.
  • a >= b: Verifica se “a” é maior ou igual a “b”.
  • a <= b: Verifica se “a” é menor ou igual a “b”.
  • is.na(a): Verifica se “a” é um valor ausente (NA).
  • is.null(a): Verifica se “a” é nulo (NULL).

Exemplos:

# Maior que 
2 > 1
## [1] TRUE

1 > 2
## [1] FALSE

# Menor que
1 < 2
## [1] TRUE

# Maior ou igual a
0 >= (2+(-2))
## [1] TRUE

# Menor ou igual a 
1 <= 3
## [1] TRUE

# Conjunção E (ambas as condições devem ser verdadeiras)
9 > 11 & 0 < 1
## [1] FALSE

# Disjunção OU (pelo menos uma condição deve ser verdadeira)
6 < 5 | 0>-1
## [1] TRUE

# Igual a
1 == 2/2
## [1] TRUE

# Diferente de
1 != 2
## [1] TRUE

4.7 Quizz

  1. Qual operador relacional verifica se dois valores são iguais?
    1. =
    1. ==
    1. !=
    1. <=
  1. Qual operador verifica se um valor é maior que outro?
    1. >=
    1. <
    1. >
    1. <=
  1. Qual o resultado de 5 != 3?
    1. TRUE
    1. FALSE
    1. NA
    1. NULL
  1. O que x & y faz em R, onde x e y são lógicos?
    1. Realiza uma operação “OR”.
    1. Verifica se ambos são TRUE.
    1. Verifica se ao menos um é TRUE.
    1. Inverte o valor lógico de x.
  1. O que faz o operador | em expressões lógicas?
    1. Verifica se ambos os operandos são verdadeiros.
    1. Verifica se ao menos um dos operandos é verdadeiro.
    1. Verifica se ambos os operandos são falsos.
    1. Compara se os operandos são iguais.
  1. O que faz o operador ! em R?
    1. Inverte um valor lógico
    1. Multiplica dois valores
    1. Compara dois valores
    1. Calcula o resto da divisão
  1. Qual o resultado de !(TRUE)?
    1. TRUE
    1. FALSE
    1. NA
    1. NULL

4.8 Exercícios

1. Escreva um programa em R que leia dois inteiros inseridos pelo utilizador e imprima:

  • A soma dos dois números.
  • O produto dos dois números.
  • A diferença entre o primeiro e o segundo número.
  • A divisão do primeiro pelo segundo número.
  • O resto da divisão do primeiro pelo segundo.
  • O resultado do primeiro número elevado à potência do segundo.

Dica: Use as funções readline() para entrada de dados e as.integer() para conversão de tipos.

2. Escreva um programa em R que leia dois números de ponto flutuante (números decimais) e imprima:

  • A soma dos dois números.
  • A diferença entre os dois números.
  • O produto dos dois números.
  • O resultado do primeiro número elevado à potência do segundo.

Dica: Use as.numeric() para converter a entrada para números de ponto flutuante.

3. Escreva um programa em R que leia uma distância em milhas inserida pelo utilizador e a converta para quilómetros usando a fórmula: \(K = M*1.609344\).

Dica: Lembre-se de usar as.numeric() para converter a entrada para um número.

4. Escreva um programa em R que leia três inteiros correspondentes ao comprimento, largura e altura de um paralelepípedo, e imprima seu volume.

5. Escreva um programa em R que leia três inteiros e imprima a média dos três números.

6. Escreva um programa em R que leia uma temperatura em graus Fahrenheit e a converta para graus Celsius usando a fórmula: \(C = \frac{F - 32}{1.8}\).

7. Escreva um programa em R que leia uma hora no formato de 24 horas e imprima a hora correspondente no formato de 12 horas.

8. Está a olhar para um relógio e são exatamente 14h. Definiu um alarme para tocar dentro de 51 horas. A que horas o alarme tocará?

9. Escreva um programa em R que resolva a versão geral do problema acima. Peça ao utilizador para inserir a hora atual (em horas) e o número de horas de espera antes que o alarme toque. O programa deve imprimir a hora em que o alarme tocará.

10. Escreva um programa em R que leia um número inteiro fornecido pelo utilizador e verifique se esse número é maior que 10. O programa deve imprimir TRUE se o número for maior que 10 ou FALSE caso contrário.

11. Escreva um programa em R que leia dois números fornecidos pelo utilizador e verifique se eles são iguais. O programa deve imprimir TRUE se os números são iguais ou FALSE caso contrário.

12. Escreva um programa em R que peça ao utilizador para inserir dois números e verifique se o primeiro número é maior ou igual ao segundo. O programa deve imprimir TRUE ou FALSE.

13. Escreva um programa em R que peça ao utilizador para inserir um número e verifique se esse número está entre 0 e 100, inclusive. O programa deve imprimir TRUE se o número está no intervalo e FALSE caso contrário.

14. Escreva um programa em R que leia três números fornecidos pelo utilizador e verifique se o primeiro número é menor que o segundo e se o segundo é menor que o terceiro. O programa deve imprimir uma mensagem indicando se a condição é verdadeira ou falsa.