Resumo da aula
Ajuda
| Comando | O que faz |
|---|---|
?round ou help(round) | abre a documentação da função |
??arredondar ou help.search("arredondar") | procura um termo em toda a documentação |
args(round) | mostra só os argumentos da função |
example(round) | roda os exemplos da documentação |
Atribuição e vetores
x <- 10é a forma mais usada. Também existemx = 10e10 -> x.c()combina valores em um vetor:notas <- c(7.5, 8, 6).
Nomes de variáveis
- Podem ter letras, números,
.e_. - Não podem começar com número ou
_. Hífen e espaço não são permitidos (nota-finalseria "nota menos final"). - O
.é comum em R (nota.final). Nomes que começam com.ficam ocultos nols()e aparecem nols(all.names = TRUE). - R diferencia maiúsculas de minúsculas:
Notaenotasão variáveis diferentes.
Operações matemáticas
| Operação | Símbolo | Exemplo | Resultado |
|---|---|---|---|
| soma | + | 7 + 2 | 9 |
| subtração | - | 7 - 2 | 5 |
| multiplicação | * | 7 * 2 | 14 |
| divisão | / | 7 / 2 | 3.5 |
| potência | ^ | 7 ^ 2 | 49 |
| divisão inteira | %/% | 7 %/% 2 | 3 |
| resto | %% | 7 %% 2 | 1 |
Logaritmos: log(x) (natural, base e), log10(x), log2(x), log(x, base = b) e o inverso exp(x).
Tipos (veja com typeof() e class())
| Tipo | Exemplo | typeof() |
|---|---|---|
| numérico real | 3.14 | "double" |
| inteiro | 42L (o L marca inteiro) | "integer" |
| texto | "olá" | "character" |
| lógico | TRUE, FALSE | "logical" |
| complexo | 2+3i | "complex" |
| bruto (bytes) | as.raw(255) | "raw" |
NA é valor ausente e NULL é "nada".
Mostrando resultados
print(x)mostra do jeito do R, com[1]e aspas nos textos.cat("a", "b", "\n")junta e mostra sem aspas. O"\n"quebra a linha.sprintf("%s tem %d anos e %.2f m", nome, idade, altura)monta texto formatado:%stexto,%dinteiro,%freal,%.2freal com 2 casas.- Juntos:
cat(sprintf("Total: %.2f\n", total)).
Vetores e coerção: um vetor guarda um único tipo. Misturando, o R converte tudo pro tipo mais geral: lógico → inteiro → real → complexo → texto.
Exercícios do Lab 0
1. Pedindo ajuda ao R (10 pts). Pela ajuda (?round, args(round)), descubra o argumento de casas decimais e crie pi_arred com pi arredondado para 2 casas, escrevendo o nome do argumento.
pi_arred <- round(pi, digits = 2) # o argumento de casas decimais se chama digits; dá 3.142. Atribuição e o c() (10 pts). Uma forma diferente em cada item: idade = 20 com <-; altura = 1.6 com =; disciplina = "Probabilidade e Estatistica" com ->; vetor notas com 9.2, 9.6 e 9.1.
idade <- 20 # atribuição com <-altura = 1.6 # atribuição com ="Probabilidade e Estatistica" -> disciplina # atribuição para a direitanotas <- c(9.2, 9.6, 9.1) # vetor com c()3. Nomes de variáveis (10 pts). Com p1 = 6.9 e p2 = 9.1: crie nota.final com a média; .secreta = TRUE (aparece no ls()?); e o vetor validos com os nomes válidos entre 2nota, nota_2, .nota, nota-final, _nota, nota.2.
nota.final <- mean(c(p1, p2)) # média de 6.9 e 9.1 = 8.secreta <- TRUE # começa com ponto: oculta no ls(), aparece no ls(all.names = TRUE)validos <- c("nota_2", ".nota", "nota.2") # só esses 3 são válidos4. Operações matemáticas (15 pts). Com a = 20 e b = 4, crie soma, subtracao, multiplicacao, divisao, potencia, div_inteira, resto e confere = div_inteira * b + resto. Por que confere == a dá TRUE?
soma <- a + b # 24subtracao <- a - b # 16multiplicacao <- a * b # 80divisao <- a / b # 5potencia <- a ^ b # 160000div_inteira <- a %/% b # 5resto <- a %% b # 0confere <- div_inteira * b + resto # 5 * 4 + 0 = 20: quociente vezes divisor mais resto sempre volta ao númeroDiferença: / é a divisão normal (com casas decimais), %/% fica só com a parte inteira e %% dá o resto.
5. Logaritmos (10 pts). Com v = 128: ln_v, log10_v, log2_v, log_b (base 6 com base =) e volta = exp(ln_v).
ln_v <- log(v) # log naturallog10_v <- log10(v) # base 10log2_v <- log2(v) # base 2 = 7log_b <- log(v, base = 6) # base 6 com o argumento basevolta <- exp(ln_v) # exp desfaz o log natural: volta a 1286. Tipos de variáveis (15 pts). Uma variável de cada tipo, tipos com o typeof() de cada uma e classe_num com class(num).
num <- 6 # doubleint <- 6L # integer por causa do Ltxt <- "guilherme" # characterlogi <- TRUE # logicalcomp <- 2+3i # complexcru <- as.raw(num) # rawtipos <- c(typeof(num), typeof(int), typeof(txt), typeof(logi), typeof(comp), typeof(cru))classe_num <- class(num) # "numeric", enquanto typeof(num) dá "double": não são iguais42 é real (double). 42L é inteiro (integer).
7. print, cat e sprintf (15 pts). Com produto = "calculadora", preco = 77.73 e qtd = 7: mostrar com print(), montar frase = "Produto: calculadora | Valor: R$ 77.73", mostrar com cat() e mostrar o total.
print(produto)print(preco)frase <- sprintf("Produto: %s | Valor: R$ %.2f", produto, preco)cat(frase, "\n")cat(sprintf("Total de %d unidades: R$ %.2f\n", qtd, qtd * preco)) # 7 * 77.73 = 544.11print() pra ver um objeto, cat() pra texto limpo sem aspas, sprintf() pra montar texto formatado.
8. Vetores de inteiros e tipos misturados (15 pts).
seq_int <- 1:8 # inteiros de 1 a 8int_c <- c(10L, 20L, 30L) # o L força integertamanho <- length(seq_int) # 8tipos_mistos <- c( typeof(c(1, "dois", TRUE)), # "character": tudo vira texto typeof(c(1L, 2.5)), # "double" typeof(c(TRUE, FALSE, 2L)) # "integer")