Os Professores

  1. Professor Ricardo Veiga
  1. Professor Augusto Filho

Prof. Ricardo Veiga Prof. Augusto Filho


Introdução ao R

O R é uma linguagem de programação utilizado para cálculos estatísticos. Foi criada por Ross Ihaka e por Robert Gentleman do Departamento de estatística da Universidade de Auckland, Nova Zelândia e posteriormente foi atualizada por um esforço coletivo entre pesquisadores de diversas partes do mundo.


Instalação do R

O R pode ser baixado em http://nbcgib.uesc.br/mirrors/cran/. Para realizar a instalação basta clicar em Next e finalizar a instalação em seu computador. O usuário poderá optar por editores alternativos da linguagem R. Dentre eles, podemos destacar o R-Studio, disponível em https://www.rstudio.com/products/rstudio/download/#download.


Comandos Básicos no R

O R pode ser utilizado como uma simples calculadora:

2+2
## [1] 4

Ou ainda:

5-3
## [1] 2

Podemos utilizar a múltiplicação:

5*5
## [1] 25

e a divisão:

9/3
## [1] 3

Radiciação e Potenciação

Para encontrarmos a raiz quadrada de um determinado número, utilizaremos a função sqrt(). Logo a raiz quadrada de 25 é dada por:

sqrt(25)
## [1] 5

No caso da potenciação, deveremos utilizar a acento cincunflexo como simbologia da potencialização. Portanto se desejarmos encontrar \(\begin{equation} 8^2 \end{equation}\) deveremos usar:

8^2
## [1] 64

Raiz cúbida

Para determinarmos a raiz cúbida do número 8, deveremos eleva-lo a um terço. Temos \(\sqrt[3]8=8^{\frac{1}{3}}\). Logo temos:

8^(1/3)
## [1] 2

Exponencial e logaritmos na base e

Ao trabalhar-mos com o e-neperiano, devemos ter em mente que o seu valor é 2.7182818. Ou seja, o R trabalha com a base e no logaritmo. Desta forma, ao determinarmos \(log_{10}100\), devemos ter em mente que o cálculo realizado será:

\[\begin{eqnarray} log_{10}100 &=&\frac{log_e100}{log_e10} \\ log_{10}100 &=&\frac{ln 100}{ln 10}\\ log_{10}100 &=& 4.60517 \end{eqnarray}\]

No R, essa equação é dada da seguinte forma:

log(100)
## [1] 4.60517

Para determinarmos o exponencial do número 1, deveremos utilizar a função exp():

exp(1)
## [1] 2.718282

Linguagem de programação orientada a objetos

O R permite que sejam feitas ligações entre textos,números ou resultados a um objeto. Desta forma o R facilita de modo digno de nota o desenvolvimentos de códigos ou a obtenção de resultados, visto que é uma linguagem voltada a objetos. O exemplo a seguir irá mostrar essa facilidade.

Neste exemplo foi atribuído a variável x o valor 2

x=2
x
## [1] 2

Aqui será atribuido à variável y o resultado da expressão \(2+5+(2\cdot 3)/3\).

y=2+5+(2*3)/3
y # resultado atribuido a variavel y.
## [1] 9

Os vetores

O R permite que trabalhemos com vetores. Para isso é necessário que utilizemos o comando c(). Este comando permite que sejam concatenados as informações a uma variável escolhida. No exemplo a seguir, iremos atribuir os valores (1,3,5), a um vetor de nome x.

x=c(1,3,5)
x #chamando o vetor x com os elementos (1,3,5)
## [1] 1 3 5

Logo, a variável x será um vetor com os elementos (1,3,5).


Agora, iremos criar uma variável y que irá receber os valores (2,4,6,8).

y=c(2,4,6,8)
y
## [1] 2 4 6 8

Tamanho do vetor

Para se determinar o tamanho de um vetor deve-se usar o seguinte comando: length().

length(x) #determina o tamanho do vetor x
## [1] 3

Para o tamanho do vetor y, temos:

length(y)
## [1] 4

Operações com vetores

É possivel trabalharmos com vetores e realizarmos somas, subtrações, multiplicações e divisões entre vetores.

Suponha que estejamos trabalhando com o vetor a formado pelos elementos 1,3,5,7 e o vetor b formado pelos números 2,4,6,8. Abaixo será apresentado os resultados das operações fundamentais entre estes vetores:

a=c(1,3,5,7)
b=c(2,4,6,8)

Logo a soma do vetor a+b é apresentado a seguir:

a+b
## [1]  3  7 11 15

A subratração entre os vetores a-b é apresentado a seguir:

a-b
## [1] -1 -1 -1 -1

A multiplicação e divisão são apresentados a seguir:

a*b
## [1]  2 12 30 56
a/b
## [1] 0.5000000 0.7500000 0.8333333 0.8750000

Alguns comandos úteis:

À medida que novos vetores forem criados, eles serão automaticamente salvos no console do R. Logo para mostrarmos na tela estes vetores deveremos usar o comando ls().

ls()  #Mostra os vetores que foram criados.
## [1] "a" "b" "x" "y"

Para removermos ou deletarmos um vetor, deveremos usar o comando rm(). No exemplo abaixo, iremos revemover o vetor x.

rm(x)  #Remove o vetor x
ls()   #Mostra os vetores anteriores, sem o vetor x.
## [1] "a" "b" "y"

No entanto, haverá diversas ocacioes em que será necessário limparmos diversos vetores de uma única vez, desta forma o comando de deveremos usar é rm(list=ls()).

rm(list=ls())    #Deleta todos os vetores.
ls()             #Irá mostrar que não existem vetores.
## character(0)

E finalmente, o comando CTRL + L é usado para limpar a tela do Console do R.


Determinando a classe de um vetor

Os vetores podem ser classificados quanto a sua estrutura como númericos, inteiros, complexos, lógicos ou ainda podem ser classificados como character, ou seja, um vetor formado por textos. Logo, será importante sabermos qual a classe do vetor em que estaremos trabalhando e para isso, utilizaremos o comando class().

O vetor de classe Numerica

Valores decimais como 3.1415927 são chamados de numericos em R. Este é o tipo de valor computacional padrão. Logo se atribuirmos um valor decimal a uma variável z esta variável passará a ter um padrão numerico. No exemplo a seguir, iremos criar um vetor formado por valores decimais e determinaremos a sua classe.

z=c(3.14, 1.72)
z                #Vetor formado por números decimais.
## [1] 3.14 1.72

Para determinarmos a sua classe, deveremos utilizar o comando class():

class(z)        #Irá mostrar a classe do vetor z. 
## [1] "numeric"

Vale ressaltar que mesmo se desejarmos salvar um valor inteiro a uma variável qualquer, esta variável ainda será salva com a classe numerica.

t=c(1,5,10)  #vetor t formado por números inteiros.
t
## [1]  1  5 10

A classe deste vetor ainda será numerica:

class(t)
## [1] "numeric"

O fato da variável t não ser considerada um vetor integer pode ser confirmado usando o comando is.integer.

is.integer(t)   #Estamos perguntando se o vetor t pode ser considerado um vetor inteiro (interger)
## [1] FALSE

O vetor de classe Inteiro

Para criarmos um vetor inteiro em R, utilizamos o comando as.integer() e verificamos se de fato a variável assume o comportamento inteiro usando o comando is.integer().

d=as.integer(c(3,5,9,8))
d                      #Criamos um vetor inteiro e exibimos o seu valor
## [1] 3 5 9 8

Agora, iremos verificar o comportamento da variável d em relação à sua estrutura.

class(d)               #Estamos verificando a classe do vetor.
## [1] "integer"

Ou ainda:

is.integer(d)          #Estamos perguntando a classe da variável d.
## [1] TRUE

O vetor de classe complex

Um valor complexo em R é definido pelo número puro imaginário i. Logo, poderemos criar uma variável complexa da seguinte forma:

e=c(3+4i,5+3i)   #Criação de uma variável complexa
e
## [1] 3+4i 5+3i

Para determinarmos a sua classe, utilizaremos o comando class().

class(e)  #Imprmindo o nome da classe de e
## [1] "complex"

O vetor de classe character

Um vetor caracter é usado para armazenar textos em R. Se criarmos uma variável fque receba o nome augusto e uma outra variável g que receba o nome filho, poderemos usar a função paste() para juntar os nomes separados por espaços.

f="augusto"; g="filho"
paste(f,g)
## [1] "augusto filho"

No entanto é bem melhor criar uma cadeia de caracteres com a função sprintf(), que possui uma sintaxe semelhante a utilizada na linguagem C.

sprintf("%s tem %d reais.", "Augusto", 100) 
## [1] "Augusto tem 100 reais."

Ainda é possível extrairmos uma substring. Para isso deveremos utilizar a função substr(). Neste exemplo iremos extrair uma substring entre a 2 e a 30 posição da string.

substr("Não aprendi a me render, que caia o inimigo então.",start = 2,stop = 30)
## [1] "ão aprendi a me render, que c"

Ainda poderemos substituir a primeira ocorrência da palavra caia por outra palavra durma na string usando a função sub().

sub("caia","durma","Não aprendi a me render, que caia o inimigo então.")
## [1] "Não aprendi a me render, que durma o inimigo então."

Vetores Lógicos

Os vetores lógicos são aqueles em que somente dois valores são possíveis: FALSE ou TRUE. Eles são usados para a realização de testes.

Se desejarmos criar um vetor lógico formado por TRUE, TRUE, TRUE FALSE, poderemos proceder da seguinte forma:

j=c(T,T,T,F)
j
## [1]  TRUE  TRUE  TRUE FALSE
class(j)
## [1] "logical"

Poderemos realizar testes lógicos.

x=1; y=2   #Estamos atribuindo o valor 1 para x e o valor 2 para y
z= x > y   #Estamos perguntando se x é maior do que y
z
## [1] FALSE

O resultado nos mostra que z é FALSE, ou seja, x não é maior do que y.

Iremos perguntar qual é a classe do vetor z:

class(z)
## [1] "logical"

As operações lógicas padrão são: & (e), |(ou) e !(negação).

u=TRUE; v = FALSE
u & v              #Estamos perguntando U e V (verdadeiro e falso = falso)
## [1] FALSE

Da mesma forma, pode-se perguntar:

u | v              #Estamos perguntando U ou V (verdadeiro OU falso = Verdadeiro)
## [1] TRUE

E podemos perguntar a negação de u.

!u                 #Visto que u é TRUE então a resposta para NÃO TRUE é FALSE.
## [1] FALSE

Sequências

É possível a criação de sequência no R usando os comandos : e seq(). Trabalhar com sequências falicita a manipulação de dados. A seguir apresentaremos uma sequência de 1 até 10.

1:10
##  [1]  1  2  3  4  5  6  7  8  9 10

Ainda é possível a utilização da função seq() para criarmos sequências mais elaboradas. No exemplo a seguir será apresentado uma sequência com início em 2 e término em 100 alternando-se de dois em dois elementos.

seq(from=2,to=100,by=2)    #Sequência com início em 2 e término em 100, variando de 2 em 2.
##  [1]   2   4   6   8  10  12  14  16  18  20  22  24  26  28  30  32  34
## [18]  36  38  40  42  44  46  48  50  52  54  56  58  60  62  64  66  68
## [35]  70  72  74  76  78  80  82  84  86  88  90  92  94  96  98 100

Ainda podemos decidir a quantidade de elementos que formaram a sequência com a instrução length().

seq(2,100,length=20) #Sequência com início em 2 e término em 100 com 20 elementos.
##  [1]   2.000000   7.157895  12.315789  17.473684  22.631579  27.789474
##  [7]  32.947368  38.105263  43.263158  48.421053  53.578947  58.736842
## [13]  63.894737  69.052632  74.210526  79.368421  84.526316  89.684211
## [19]  94.842105 100.000000

Ainda é possível a construção de sequência com números repetidos, bastando-se para isso utilizar o comando rep().

rep(2,5)            #O número 2 será repetido 5 vezes.
## [1] 2 2 2 2 2

No exemplo a seguir, a sequência de 1 até 5 irá se repetir 4 vezes:

rep(1:5,4)          #A sequência numérica de 1 até 5 irá se repetir 4 vezes.
##  [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5

Temos ainda o comando each() que irá determinar a quantidade de repetiçõe que a sequência deverá apresentar.

rep(1:10,each=4)
##  [1]  1  1  1  1  2  2  2  2  3  3  3  3  4  4  4  4  5  5  5  5  6  6  6
## [24]  6  7  7  7  7  8  8  8  8  9  9  9  9 10 10 10 10

Matrizes

O trabalho com matrizes é muito importante no R. A criação de uma matriz é feita pelo comando matrix(). De um modo geral basta criarmos um vetor de tamanho específico e determinar as dimensões que a matriz deverá ter, ou seja, determinar o número de linhas e colunas (nesta ordem).

x=seq(1:9)                    #Vetor construído por uma sequência de 1 até 9.  
matrix(x,nrow=3,ncol=3)       #Matriz criada a partir do vetor x, com 3 linhas e 3 colunas.
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9

No exemplo anterior foi construído uma matriz com três linhas e três colunas.

Neste próximo exemplo, iremos criar uma matriz com três linhas e quatro colunas.

x=seq(1:12)                   #Vetor x com 12 elementos
matrix(x,nrow=3,ncol = 4)     #Matriz com três linhas (rwow) e quatro colunas (ncol).
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12

Observe que a matriz é preenchida pelas colunas. Se desejarmos que a matriz seja preenchida pelas linhas deveremos dizer isso ao R com o seguinte comando byrow=TRUE.

x=seq(1:12)
matrix(x,nrow=3,ncol=4,byrow=TRUE)    #O argumento byrow=T orienta o R para preencher a matriz com linha.
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12

E se desejassemos mudar a dimensão da matriz para uma matriz 4 X 3:

x=seq(1:12)
matrix(x,ncol=3,byrow = T)     #O argumento byrow=T é o mesmo que byrow=TRUE
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
## [3,]    7    8    9
## [4,]   10   11   12

Obtendo informações sobre a matriz

Em diversas situações será necessário que você descubra a dimensão da matriz em que você estará trabalhando. Para isso basta usar o comando dim().

x=seq(1:25)                          #Criação de um vetor de 25 elementos
y=matrix(x,nrow=5,ncol=5,byrow=T)    #Criação de uma matriz y com 5 linhas e 5 colunas
dim(y)                               #Descreve a dimensão da matriz y
## [1] 5 5

Portanto a matriz y possui 5 linhas e 5 colunas.

Então uma forma mais resumida de escrever uma matriz pode ser apresentada a seguir:

x=matrix(c(1:12),3,4,byrow = T)     #X é a matriz que receberá um vetor com 12 elementos
x                                   #Os elementos estão em 3 linhas e 4 colunas e são agrupados por linha.  
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12

Se desejassemos obter as medidas de posição de cada coluna da matriz x deveremos utilizar o comando summary().

x=matrix(c(1:12),3,4,byrow=T)         #Estamos criando uma matriz 3 x 4.
summary(x)                            #Estatística descritiva de cada coluna.  
##        V1          V2           V3           V4    
##  Min.   :1   Min.   : 2   Min.   : 3   Min.   : 4  
##  1st Qu.:3   1st Qu.: 4   1st Qu.: 5   1st Qu.: 6  
##  Median :5   Median : 6   Median : 7   Median : 8  
##  Mean   :5   Mean   : 6   Mean   : 7   Mean   : 8  
##  3rd Qu.:7   3rd Qu.: 8   3rd Qu.: 9   3rd Qu.:10  
##  Max.   :9   Max.   :10   Max.   :11   Max.   :12

A seguir é apresentado uma descrição de toda a matriz:

summary(as.numeric(x))   #O comando as.numeric(x), transformou a matriz x em um vetor numerico.
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1.00    3.75    6.50    6.50    9.25   12.00

Posição de um elemento na matriz

Para selecionarmos um elemento na matriz, deveremos usar [].

x=matrix(c(1:25),ncol=5,byrow = T)      #Matriz x com 25 elementos
x                                       #Mostrando a matriz x
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    2    3    4    5
## [2,]    6    7    8    9   10
## [3,]   11   12   13   14   15
## [4,]   16   17   18   19   20
## [5,]   21   22   23   24   25
x[8]                                    #Mostra o oitavo elemento, lido por coluna.
## [1] 12

No exemplo acima, o oitavo elemento é o número 12.

Se precisarmos selecionar um elemento baseado em sua posição na matriz, é mais conveniente localizarmos pela posição da linha e coluna, deta forma se tentarmos extrair o número 20, precisamos localiza-lo na matriz em relação a sua posição. Logo o valor 20 ocupa a quarta linha e quinta coluna, temos: \(A_{4,5}=20\). O R utiliza a seguinte formulação para determinar qual é o elemento:

x[4,5]         #Determina o elemento que ocupa a posição: [lina,coluna]
## [1] 20

Ainda poderemos selecionar todos os elementos que ocupam a quarta linha da matriz x:

x[4,]          #Determina os elementos que estão na 4 linha
## [1] 16 17 18 19 20

Ou selecionarmos todos os elementos que ocupam a 5 coluna da matriz x:

x[,5]          #Determina os elementos que estão na 5 coluna
## [1]  5 10 15 20 25

Mais operações com matrizes

Os comandos cbind() e rbind()são muito usados em matrizes para o aumento de colunas e linhas respectivamente. Vamos supor que a matriz X seja constituída pelos números 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ou seja, a matriz X será uma matriz 3 x 4.

x=matrix(c(1:12),ncol=4,byrow = T)
x              #Matriz x com 3 linhas e 4 colunas.
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12

Agora é necessário que você adicone uma quinta linha à matriz \(X_{3,4}\), de modo que ela passe a ter dimensão \(X_{3,5}\).

y=cbind(x,100:102)  #Aqui y será a nova matriz com a adição de uma nova coluna.
y          
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    2    3    4  100
## [2,]    5    6    7    8  101
## [3,]    9   10   11   12  102