Pular para o conteúdo
N2 · tópico 1 de 7

Lab 0: Primeiros passos em R

Resumo da aula

Ajuda

ComandoO 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 existem x = 10 e 10 -> 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-final seria "nota menos final").
  • O . é comum em R (nota.final). Nomes que começam com . ficam ocultos no ls() e aparecem no ls(all.names = TRUE).
  • R diferencia maiúsculas de minúsculas: Nota e nota são variáveis diferentes.

Operações matemáticas

OperaçãoSímboloExemploResultado
soma+7 + 29
subtração-7 - 25
multiplicação*7 * 214
divisão/7 / 23.5
potência^7 ^ 249
divisão inteira%/%7 %/% 23
resto%%7 %% 21

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())

TipoExemplotypeof()
numérico real3.14"double"
inteiro42L (o L marca inteiro)"integer"
texto"olá""character"
lógicoTRUE, FALSE"logical"
complexo2+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: %s texto, %d inteiro, %f real, %.2f real 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.14

2. 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álidos

4. 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úmero

Diferenç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 128

6. 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 iguais

42 é 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.11

print() 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")