1 Objetivos

Nesta seção veremos:

2 CalculadoRa

O R é uma calculadora turbinada com diversas funções matemáticas disponíveis. Para quem não conhece o R, essa uma forma de familiarizar-se com a linha de comandos do R.

2.1 Aritmética básica

Todas operações feitas em uma calculadora podem ser realizadas na linha de comandos do R.

10 + 2 + 4
#> [1] 16
# Exemplo de divisao 
(5 + 14)/2
#> [1] 9.5
# exponenciação
2^3
#> [1] 8
4^0.5
#> [1] 2
# operador artimético para se determinar o resto de uma divisao
10 %% 2
#> [1] 0
2001 %% 2
#> [1] 1
# operador de divisão inteira
11 %/% 2
#> [1] 5

Conheça mais operadores aritméticos, digitando na linha de comando:

?"Arithmetic"

A janela aberta mostrará outros operadores aritméticos disponíveis com o R. O texto mostrado faz parte do manual de ajuda do R.

2.2 Constantes

O R possui algumas constantes pré-definidas, como o a constante pi (π).

pi
#> [1] 3.141593

O R também trabalha com caracteres, alguns vetores de caracteres pré-definidos são:

LETTERS
#>  [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q"
#> [18] "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
letters
#>  [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q"
#> [18] "r" "s" "t" "u" "v" "w" "x" "y" "z"
month.abb
#>  [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov"
#> [12] "Dec"
month.name
#>  [1] "January"   "February"  "March"     "April"     "May"      
#>  [6] "June"      "July"      "August"    "September" "October"  
#> [11] "November"  "December"

Note que caracteres estão sempre entre aspas: "".

vogais <- aeiou
#> Error in eval(expr, envir, enclos): object 'aeiou' not found
vogais <- "aeiou"
vogais
#> [1] "aeiou"

2.3 Funções matemáticas internas

Existem diversas funções internas do R que permitem, por exemplo, sortear números aleatóriamente, arrendondar números, calcular o fatorial, calcular o seno, cosseno de um ângulo e etc. A sintaxe para chamar uma função no R é:

funcão(argumento)

Por exemplo:

# funções trigonométricas
sin(pi/6)
#> [1] 0.5
cos(pi)
#> [1] -1
# raiz quadrada
sqrt(100)
#> [1] 10
# exponencial
exp(1)
#> [1] 2.718282
# fatorial
factorial(4)
#> [1] 24

No R você verá que parênteses são frequentemente utilizados. Eles são sempre associados à funções. Qualquer palavra antecedendo um parênteses é uma função.

Para ver a lista completa de funções trigonométricas:

?"Trig"

notas de aula da aula 3 disponíveis aqui

2.4 Valores numéricos especiais

Um caso particular sobre operação aritméticas no R, são os valores numéricos Infe NaN que resultam de operações como:

2/0
#> [1] Inf
-12/0
#> [1] -Inf
exp(-Inf)
#> [1] 0
log(0)
#> [1] -Inf
0/Inf
#> [1] 0
(0:3)^Inf
#> [1]   0   1 Inf Inf
log(-0.5)
#> Warning in log(-0.5): NaNs produced
#> [1] NaN
sqrt(-1)
#> Warning in sqrt(-1): NaNs produced
#> [1] NaN
0/0 
#> [1] NaN
Inf-Inf
#> [1] NaN
Inf/Inf
#> [1] NaN
mean(c(NA, NA), na.rm = TRUE)
#> [1] NaN

NaN é a abreviação para Not a Number. Geralmente surge quando um cálculo não tem sentido matemático ou não pode ser propriamente realizado.

A demonstração das diferentes formas de se obter essas constantes especiais é importante para entender a origem delas durante a execução de um script mais extenso.

Outra constante especial do R é o NA (Not Available) que representa valor faltante, um problema comum em análise de dados. Qualquer operação envolvendo NA resultará em NA (Tabela 1).

Tabela 1. Operações com NA.
operação resultado
NA + 5 NA
sqrt(NA) NA
NA^2 NA
NA/NaN NA

2.5 Notação científica e número de dígitos

Na maioria das vezes precisamos trabalhar com números grandes e consequentemente acabamos usando uma notação científica ou exponencial. No R há diferentes formas de representar números com expoentes:

1.2e-6
#> [1] 1.2e-06
# expressões equivalentes
1.2E6; 1.2*10^6  
#> [1] 1200000
#> [1] 1200000

Os resultados dos cálculos no R são mostrados com 7 dígitos significativos, o que pode ser verificado pela getOptions(). É possível mudar para n dígitos usando a função options(), conforme exemplo abaixo.

# opção de dígitos padrão
getOption("digits")
#> [1] 7
exp(1)
#> [1] 2.718282
# alterando para 14
options(digits = 14)
exp(1)
#> [1] 2.718281828459
getOption("digits")
#> [1] 14
# redefinindo para o número de casas decimais padrão
options(digits = 7)
getOption("digits")
#> [1] 7

3 Variáveis

3.1 Formas de atribuição

3.1.1 Variável recebe valor

Até agora nós usamos expressões para fazer uma operação e obter um resultado. O termo "expressão" significa uma sentença de código que pode ser executada. Se a avaliação de uma expressão é salva usando o operador <-, esta combinação é chamada "atribuição". O resultado da "atribuição" é armazenado e pode ser utilizado posteriormente.

O que é uma variável? É um nome usado para guardar os dados. Por exemplo para atribuir o valor 1013 a variável chamado p usamos a combinação dos símbolos menor (<) e menos (-) <- entre os dois números. Esse é o símbolo de atribuição a uma variável.

p <- 1013
# para mostrar a variável digite o nome da variável
p
#> [1] 1013
# ou use a função print()
print(p)
#> [1] 1013

O R diferencia letras maiúsculas de minúsculas. Portanto p e P são variáveis diferentes.

p
#> [1] 1013
P
#> Error in eval(expr, envir, enclos): object 'P' not found

Como criamos apenas a variável p, P não foi encontrada.

A variável p pode ser utilizado para criar outras variáveis.

p_pa <- p * 100
# pressão em Pascal
p_pa
#> [1] 101300

A seta de atribuição pode ser usada em qualquer sentido. Parênteses, além de estarem sempre acompanhando uma função, também são usados para indicar a prioridade dos cálculos.

7/3 + 0.6 -> y1
 y1
#> [1] 2.933333
7/(3 + 0.6) -> y2
 y2
#> [1] 1.944444

Os espaços em torno do símbolo de atribuição (<-) não são obrigatórios mas eles ajudam na legibilidade do código.

x <- 1
x < -1
# atribuição ou menor que?
x<-1 

Vamos criar uma variável chamada ndias3 que recebe o nº de dias no mês de Março e ndias4 que recebe o nº de dias no mês de Abril.

nd3 <- 31
nd4 <- 30

O total de dias nos meses de março e abril será armazenado na variável totdias:

totd <- nd3 + nd4
totd
#> [1] 61

A atribuição de um mesmo valor para diferentes variáveis pode ser feita da seguinte forma:

# número de dias em cada mês
jan <- mar <- mai <- jul <- ago <- out <- dez <- 31
abr <- jun <- set <- nov <- 30
fev <- 28
# verificação
jan; jul
#> [1] 31
#> [1] 31
jun; set
#> [1] 30
#> [1] 30
fev
#> [1] 28

Nós estamos definindo a variável, digitando o nome dela na linha de comando e teclando enter para ver o resultado. Há uma forma mais prática de fazer isso e mostrar o resultado cercando a atribuição por parênteses:

# ao invés de 
# tar <- 20
# tar
# é mais prático
(tar <- 20) 
#> [1] 20

Se desejamos calcular e já visualizar o valor da pressão de vapor de saturação obtida com a equação de Tetens, podemos fazer:

(es <- 0.611 * exp((17.269 * tar)/(tar + 237.3)))
#> [1] 2.338865

Quando usamos a mesma variável numa sequência de atribuições o seu valor é sobrescrito. Portanto não é bom usar nomes que já foram usados antes, exceto se a intenção for realmente essa. Para saber os nomes das variáveis já usados use a função ls()1 para verificar as variáveis existentes:

ls()
#>  [1] "abr"      "ago"      "dez"      "es"       "fev"      "jan"     
#>  [7] "jul"      "jun"      "mai"      "mar"      "nd3"      "nd4"     
#> [13] "nov"      "oper_nas" "out"      "p"        "pcks"     "p_pa"    
#> [19] "set"      "tar"      "totd"     "vogais"   "y1"       "y2"
totd <- jan*7; totd <- totd + fev; totd <- totd + 4*abr
totd
#> [1] 365

3.1.2 Atribuição com a função assign()

Outra forma de atribuição é através da função assign():

es
#> [1] 2.338865
assign(x = "es_hpa", value = es/10)
es_hpa
#> [1] 0.2338865
# usando função assign sem nome dos parâmetros
assign("u", 2.5)
u
#> [1] 2.5

Um exemplo mais elaborado de uso da função assign() para criar várias variáveis pode ser visto aqui.

3.2 Removendo variáveis

Para remover variáveis usa-se a função rm().

# lista de variáveis existentes
ls()
#>  [1] "abr"      "ago"      "dez"      "es"       "es_hpa"   "fev"     
#>  [7] "jan"      "jul"      "jun"      "mai"      "mar"      "nd3"     
#> [13] "nd4"      "nov"      "oper_nas" "out"      "p"        "pcks"    
#> [19] "p_pa"     "set"      "tar"      "totd"     "u"        "vogais"  
#> [25] "y1"       "y2"

Vamos remover a variável u criada previamente e ver a lista de objetos no espaço de trabalho.

rm(u)
# lista de variáveis existentes, sem u
ls()
#>  [1] "abr"      "ago"      "dez"      "es"       "es_hpa"   "fev"     
#>  [7] "jan"      "jul"      "jun"      "mai"      "mar"      "nd3"     
#> [13] "nd4"      "nov"      "oper_nas" "out"      "p"        "pcks"    
#> [19] "p_pa"     "set"      "tar"      "totd"     "vogais"   "y1"      
#> [25] "y2"

Podemos remover mais de uma variável ao mesmo tempo.

rm(es_hpa, es, tar, y1, y2)
# lista de variáveis existentes, sem es_hpa, es, tar, y1, y2
ls()
#>  [1] "abr"      "ago"      "dez"      "fev"      "jan"      "jul"     
#>  [7] "jun"      "mai"      "mar"      "nd3"      "nd4"      "nov"     
#> [13] "oper_nas" "out"      "p"        "pcks"     "p_pa"     "set"     
#> [19] "totd"     "vogais"

Para remover todas variáveis do espaço de trabalho (use com cautela):

# apagando tudo
rm(list = ls())
ls()
#> character(0)

3.3 Nomeando variáveis

É preciso ter cuidado ao nomear variáveis no R porque existem algumas regras:

  • não iniciar com um número e não conter espaços
1oAno <- 1990
raizDe10 <- srt(2)
variavel teste <- 67
# nomes alternativos para as variaveis
ano1 <- 1990
variavel_teste <- 67
variavel.teste <- 68
  • não conter símbolos especiais:

    ^, !, $, @, +, -, /, ou *
dia-1 <- 2
#> Error in dia - 1 <- 2: object 'dia' not found
# alternativa
dia_1 <- 2
  • evitar o uso de nomes usados em objetos do sistema (funções internas do R ou constantes como o número π):

    c q  s  t  C  D  F  I  T  diff  exp  log  mean  pi  range  rank  var
    
    FALSE  Inf  NA  NaN  NULL TRUE 
    
    break  else  for  function  if  in  next  repeat  while
  • variáveis com acento são permitidas mas não recomendadas.

verão <- "DJF"
verão
#> [1] "DJF"

Uma boa prática de programação é usar nomes informativos para as variáveis para legibilidade do código. Uma boa referência para isso é a seção Sintaxe do Guia de estilo tidyverse (ou universo arrumado).

4 Funções e operadores utilizados

Matemática

Sequência regular

Opções de configuração

Atribuição

Ambiente de trabalho


Próximo: Tipos de Dados


  1. Essa lista de variáveis também é mostrada no painel Environment do RStudio (canto direito superior, aba Environment).