R Como Calculadora

Uma das funções básicas do R pode ser sua utilização como um software para fazer contas. Pode-se realizar operações aritméticas simples ou calcular expressões mais complexas. Também é um bom exercício para treinar o uso das abas de Script e da aba do Console.

Operadores matemáticos básicos

Os operadores matemáticos básicos são:

  • + para soma;
  • - para subtração;
  • * para multiplicação;
  • / para divisão;
  • e ^ para exponenciação.

Vamos treinar o uso dessas operações no R. Você pode digitar os comandos diretamente no Console para executá-los, ou usar o atalho CTRL+Enter sobre a linha do Script que se deseja executar.

2+2     #soma  
## [1] 4
2-2     #subtração
## [1] 0
2*3     #multiplicação
## [1] 6
9/2     #divisão
## [1] 4.5
9%%2    #modulo x mod y
## [1] 1
2^5     #exponenciação
## [1] 32

Use parênteses para separar partes dos cálculos, por exemplo, para somar três numeros e dividir por 3 (tirar a média)

(10 + 4.8 + 6.5)/3
## [1] 7.1

Para fazer a conta 4+16, dividido por 4, elevado ao quadrado:

((4+16)/4)^2
## [1] 25

Use ponto como decimal!

1.5 * 2.5
## [1] 3.75
0.6 * 1.7
## [1] 1.02

Muitas vezes o R mostra em notacao cientifica

1e3 # 1000
1e6 # 1000000

Pratique: Escreva contas que envolvam números inteiros e cada um dos operadores.

Veja a importância de ficar de olho nos parênteses:

7.5 + 3.2 + 0.1 * 0.43  
## [1] 10.743
(7.5 + 3.2 + 0.1) * 0.43  
## [1] 4.644
7.5 + 3.2 + (0.1 * 0.43)  
## [1] 10.743

O R adota as regras de precedências utilizadas na matemática: (primeiro multiplicação e divisão, depois adição e substração, etc.)

Na dúvida, utilize parênteses para indicar a precedência das operações. Eles nunca são demais!

Funções matemáticas básicas

Algumas operações matemáticas utilizam funções Toda função tem seu nome seguido de parênteses. Passaremos uma relacao das mais comuns aqui.

  • Raiz quadrada: sqrt(numero)
sqrt(16)
## [1] 4
sqrt(-16) # note que nao existe raiz quadrada de numero negativo.
## Warning in sqrt(-16): NaNs produced
## [1] NaN
  • Juntando operações:
sqrt(10 + 100)
## [1] 10.48809
sqrt(4.6^2)
## [1] 4.6
  • Exponencial: exp(numero)
exp(3)
## [1] 20.08554
  • Logaritmo: log(numero)
log(16)
## [1] 2.772589
log(-16)  # nao existe log de numero negativo ou zero
## Warning in log(-16): NaNs produced
## [1] NaN
log(0)
## [1] -Inf
log(1000)
## [1] 6.907755
# logaritmo de base 10 
log(100, base = 10)
## [1] 2
log(1000, base = 10)
## [1] 3
  • Módulo: abs(numero)
abs(-12) 
## [1] 12

Guardando valores em objetos

Podemos usar o operador de atribuição (<- ou =) para salvar números ou resultados de conta em objetos. Repare que eles ficam guardados na memória do R (janela “Global Environment” ao lado)

# Guardando o valor 5.7 no objeto x (a gente fala "x recebe o valor 5.7")
x <- 5.7
x
## [1] 5.7
# Guardando o valor 2.01 no objeto y
y <- 2.01
y
## [1] 2.01
# Guardando o resultado de uma conta no objeto z
z <- x+y
z
## [1] 7.71
# Guardando o resultado de uma conta no objeto w 
w <- z+20

# O R sobrescreve o conteúdo dos objetos (trocando o valor de x para 6)  
x    
## [1] 5.7
x <- 6
x
## [1] 6
# Letra maiuscula é diferente de minuscula
A <- 10.5
A
## [1] 10.5
a    # o objeto a não existe
## [1] 1.5

Nomeando objetos

Ao nomear objetos, é sempre importante usar nomes curtos e que façam sentido. Não use símbolos. Há um manifesto para boas práticas na criação de nomes de variáveis em R: Sintaxe - Tidyverse style guide

peso <- 72
altura <- 1.65
imc <- peso/(altura^2)
imc
## [1] 26.44628

Podemos escolher o estilo de usar maiúsculas na segunda parte do nome:

pesoAgora <- 72
pesoAntes <- 70
ganhoPeso <- pesoAgora - pesoAntes

Não podemos usar espaços, nem acentos. Mas podemos usar ponto ou _:

peso.agora <- 72
peso.antes <- 70
ganho.peso <- peso.agora - peso.antes

Para apagar objetos, podemos usar a função rm():

rm(A)
rm(w, x, y, z)

Exercício

Pratique:

  • Chame de A, o numero de alunos na turma (32), chame de P o numero de professores (5), e de E, o numero de estagiarios (2).
  • Crie esses objetos.
  • Calcule o número total de pessoas envolvidas no curso usando os objetos eguarde o resultado num objeto (com o nome que quiser)
  • Calcule a razao entre o numero de professores e numero de alunos, e guarde num objeto
  • Calcule a razao entre o numero de estagiarias e numero de alunos, e guarde num objeto

Vetores: coleção de valores

No R é muito comum trabalhar com uma coleção de valores, as quais chamamos de vetores. Para criar um vetor no R, utilizamos o comando c().

Por exemplo:

# por exemplo: seja v uma sequência de numeros 
v <- c(1, 2.5, 3.6, -4, 0.5, 6, 6.7)
v
## [1]  1.0  2.5  3.6 -4.0  0.5  6.0  6.7

Cada número tem uma posição dentro do vetor, indicada por seu índice. Podemos especificar o índice através dos colchetes []:

v[1] # primeiro elemento
## [1] 1
v[2] # segundo elemento
## [1] 2.5
v[5] # quinto elemento
## [1] 0.5

Podemos fazer contas com esses elementos:

v[2] + v[3]
## [1] 6.1
v[1] + v[5] + v[7]
## [1] 8.2

Ou podemos usar algumas funções prontas no R, que operam sobre esse conjunto de elementos:

sum(v) 
## [1] 16.3
min(v) 
## [1] -4
max(v)
## [1] 6.7
mean(v)  # media
## [1] 2.328571
median(v) # mediana
## [1] 2.5
var(v) # variancia
## [1] 13.23238
sd(v) # desvio padrao (standard deviation)
## [1] 3.637634

Exercício

Pratique:

  1. Uma cidade registrou a seguinte sequencia de casos suspeitos de dengue (por semana): 2, 6, 10, 8, 13, 21, 18, 9, 3, 1, 0.

Coloque os números em um vetor e calcule:

  • o total de casos.
  • o valor máximo de casos numa semana;
  • o valor mínimo de casos numa semana;
  • o número médio de casos por semana;
  • o total de casos nas primeiras 3 semanas.
  1. Visite a pagina da Wikipédia com o clima de São Joaquim (SC).

Faça um vetor com a temperatura mínima media por mês e:

  • Calcule a média da temperatura mínima no ano (média dos valores mensais);
  • Encontre o valor mínimo;
  • Encontre o valor máximo.

Tipos especiais de vetores

O R possui alguns atalhos que facilitam a criação de vetores, como criação de sequências, por exemplo. Observe:

# use : para criar uma sequencia de numeros inteiros 
1:10  # significa 1 a 10
##  [1]  1  2  3  4  5  6  7  8  9 10
y <- -4:20 # -4 a 20
y
##  [1] -4 -3 -2 -1  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
z <- 20:100  # 20 a 100
z
##  [1]  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55
## [37]  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91
## [73]  92  93  94  95  96  97  98  99 100
z.inv <- 100:20 # 100 a 20, sequencia decrescente
z.inv
##  [1] 100  99  98  97  96  95  94  93  92  91  90  89  88  87  86  85  84  83  82  81  80  79  78  77  76  75  74  73  72  71  70  69  68  67  66  65
## [37]  64  63  62  61  60  59  58  57  56  55  54  53  52  51  50  49  48  47  46  45  44  43  42  41  40  39  38  37  36  35  34  33  32  31  30  29
## [73]  28  27  26  25  24  23  22  21  20

Subconjuntos de vetores

É frequente a necessidade de realizar cortes em um vetor, acessando-o na forma de subconjuntos. Para isso, basta indicarmos o intervalo desejado dentro de colchetes:

v <- c(10, 2, 43, 0, 21, 5, 12, 55, -5, 3.2, 54, 1.1)

Verificando o tamanho do vetor:

length(v)
## [1] 12

Quais os elementos nas posições 1 a 3?

v[1:3]  # assim é bem mais facil do que o jeito abaixo
## [1] 10  2 43
v[c(1,2,3)]
## [1] 10  2 43

Pratique:

  • quais os valores nas posicoes 8 a 12?
  • quais os valores nas posicoes 4 a 10?
  • qual a soma dos valores nas posições 1 a 5?
  • qual a média de todos os valores?
  • qual a média dos valores nas posicoes 6 a 12?
  • qual a média dos valores nas posicoes 1 a 6?

Volte ao exercicio da temperatura em Sao Joaquim. Qual é a média de temperatura nos meses de inverno (junho a setembro)? Qual é a média da temperatura nos meses de verão?

Resumo

Agora você domina as operações e manipulações mais fundamentais do R! O R é uma linguagem pensada para ser trabalhada de forma vetorial, ou seja, executando operações sobre vetores (coleções) de dados. Assim, é muito útil ter essas funções bem praticadas, pois seu uso será constante.

Na próxima seção, vamos trabalhar com o conceito de objetos no R.