1. Particularidades do R, instalando pacotes

A primeira coisa que precisamos fazer é abrir o R. O R funciona com várias GUI (graphical user interface) diferentes inclusive a própria, mas nós recomendamos que vocês utilizem o RSTUDIO (https://www.rstudio.com) pois é uma interface mais amigável e prática para inciantes. Além disso, é a mesma que usamos (facilita o acompanhamento de vocês =D )!

Pode-se abrir o R direto pelo RSTUDIO. Na janela do console (embaixo, à esquerda), você pode conferir qual é a versão do R que está instalada no seu computador. É recomendável sempre se manter atualizado e utilizar a última versão disponível.

O R é uma ferramenta open source. Isso significa que qualquer pessoa pode contribuir disponibilizando aos usuários os novos métodos que estão desenvolvendo (e são muitos!!!). Eles ficam disponíveis por meio de pacotes que são publicados (seguindo regras específicas) em um repositório específico (CRAN). Para utilizar estes pacotes no seu computador, você precisa instalá-los e isso pode ser feito de diversas formas. Em RSTUDIO: (1) no menu ‘Tools > Install Packages’; (2) na área localizada abaixo à direita ‘aba Packages > Install’; ou (3) via comando:

install.packages(“stargazer”)

2. Encontrando e especificando seu diretório de trabalho

Ao começar a sua sessão de trabalho no R, você deve se assegurar de ter informado ao programa o diretório em que estão os seus dados e onde salvaremos os outputs produzidos pela programa (gráficos, tabelas…). Vamos checar e mudar o diretório:

getwd()
## [1] "/Users/rbrandt/Dropbox/SHARED/academic:others/EBC2015/revisados"
setwd('~/Desktop/2015EBC_mini_curso_R')
getwd()
## [1] "/Users/rbrandt/Desktop/2015EBC_mini_curso_R"

O próximo passo é uma rápida revisão de como o R funciona.

3. Criando objetos no R

Os objetos no R são criados atribuindo valores a nomes. Cada novo nome é um novo objeto. Uma das (inúmeras) formas de fazer isso é usar o operador ‘<-’. Ele tem funciona como a função ‘assign’. Podemos dizer que é uma forma de atalho. Esses objetos ficam armazenamos no nosso ambiente de trabalho (workspace) e podemos chamá-los a qualquer momento:

PSDB <- 45
assign('PT', 13)

PSDB
## [1] 45
PT
## [1] 13

Um objeto pode ser mais do que apenas um número:

Corinthians <- 'Campeão dos Campeões'

Corinthians
## [1] "Campeão dos Campeões"

E pode conter mais de um elemento:

Palmeiras <- 'Alviverde Imponente'
Palmeiras
## [1] "Alviverde Imponente"
SaoPaulo <- 'Nunca serão!'
SaoPaulo
## [1] "Nunca serão!"
TimesPaulistas <- c(Corinthians, Palmeiras, SaoPaulo)
TimesPaulistas
## [1] "Campeão dos Campeões" "Alviverde Imponente"  "Nunca serão!"

Pequeno parentesis

Qual a função de ‘c’? Você pode pedir uma ajuda ao R toda vez que não se lembrar o que uma determinada função faz, ou como usá-la.

?c

Outra forma mais completa é usar a função help.

help(c)
# mas por que a funcao help eh mais completa?
help(help)

Então quando você sabe de qual pacote é uma determinada função, você não precisa ter ele carregado para que o R consiga encontrar a informação que você busca.

help(pbtree)
## No documentation for 'pbtree' in specified packages and libraries:
## you could try '??pbtree'
help(pbtree, phytools)

Outra opção é carregar o pacote e então pedir ajuda.

require(phytools)
## Loading required package: phytools
## Loading required package: ape
## Loading required package: maps
help(pbtree)

voltando aos objetos

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

Qual a função de ‘:’?

Os nomes dos objetos são sensíveis a maiúsculas e minúsculas.

Obj <- centena + 1
Obj
##   [1]   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18
##  [18]  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35
##  [35]  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52
##  [52]  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69
##  [69]  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86
##  [86]  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101
obj <- Obj + 10
obj
##   [1]  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28
##  [18]  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45
##  [35]  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62
##  [52]  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79
##  [69]  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96
##  [86]  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111
OBJ
OBJ <- obj - Obj
OBJ
##   [1] 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
##  [24] 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
##  [47] 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
##  [70] 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
##  [93] 10 10 10 10 10 10 10 10

Vocês já aprenderam que é possível também manipular os objetos usando operadores matemáticos. Acabamos criando vários objetos, eles estão todos no nosso workspace. Mas qual são eles? Podemos usar as funções ls() ou objects()

ls()
##  [1] "centena"        "Corinthians"    "obj"            "Obj"           
##  [5] "OBJ"            "Palmeiras"      "PSDB"           "PT"            
##  [9] "SaoPaulo"       "TimesPaulistas"
objects()
##  [1] "centena"        "Corinthians"    "obj"            "Obj"           
##  [5] "OBJ"            "Palmeiras"      "PSDB"           "PT"            
##  [9] "SaoPaulo"       "TimesPaulistas"

Você pode pedir ainda mais informação sobre todos os objetos usando a função ls.str() ou até informação mais detalhada sobre objetos específicos usando str().

ls.str()
## centena :  num [1:100] 1 2 3 4 5 6 7 8 9 10 ...
## Corinthians :  chr "Campeão dos Campeões"
## obj :  num [1:100] 12 13 14 15 16 17 18 19 20 21 ...
## Obj :  num [1:100] 2 3 4 5 6 7 8 9 10 11 ...
## OBJ :  num [1:100] 10 10 10 10 10 10 10 10 10 10 ...
## Palmeiras :  chr "Alviverde Imponente"
## PSDB :  num 45
## PT :  num 13
## SaoPaulo :  chr "Nunca serão!"
## TimesPaulistas :  chr [1:3] "Campeão dos Campeões" "Alviverde Imponente" ...
str(Corinthians)
##  chr "Campeão dos Campeões"

4. Tipos de objetos

Há 5 tipos principais de objetos no R: vetores (vector), fatores (factor), matrizes (matrix), conjunto de dados (data.frame) e listas (list). Cada objeto possui diferentes atributos e valores. Entender o tipo de objeto que você está trabalhando é importante para saber que tipos de manipulações vocês podem aplicar a cada um. Uma das formas de descobrir que tipos de objetos estão no seu workspace é usando is.___(), cuja resposta é lógica. Vamos tentar nos objetos que já criamos.

is.factor(Corinthians)
## [1] FALSE
is.matrix(Corinthians)
## [1] FALSE
is.data.frame(Corinthians)
## [1] FALSE
is.list(Corinthians)
## [1] FALSE
is.vector(Corinthians)
## [1] TRUE

Até aqui nós criamos e manipulamos vetores. Mas o que é um vetor para o R?

4.1 Vetores

Vetor é um arranjo simples de números ou caracteres, por exemplo as medidas de uma única variável em uma amostra de indivíduos. É muito fácil aplicar operações matemáticas e funções para todos os valores de um vetor de uma vez, como vocês puderam observar nos exemplos acima. O vetor tem 2 atributos: ‘mode’ e ‘length’. É possível obtê-los usando mode() e lenght(). Vamos tentar.

A <- 1:5
mode(A)
## [1] "numeric"
length(A)
## [1] 5
B <- c("classe", "ordem", "família", "gênero", "espécie")
mode(B)
## [1] "character"
length(B)
## [1] 5
C <- c(FALSE, TRUE, TRUE, FALSE, TRUE)
mode(C)
## [1] "logical"
length(C)
## [1] 5

Há um vetor no meu workspace e não preciso mais utilizá-lo.

rm(SaoPaulo)

Acessando elementos de um vetor.

Use números inteiros em colchetes para indicar elementos específicos de um vetor. Vamos tentar.

x <- seq(0,3,by=0.5)

# 5o elemento do vetor x
x[5]  
## [1] 2
# do 2o ao 6o elemento de x
x[2:6]  
## [1] 0.5 1.0 1.5 2.0 2.5
# tudo exceto o primeiro elemento de x
x[2:length(x)] 
## [1] 0.5 1.0 1.5 2.0 2.5 3.0
# tudo exceto o primeiro elemento de x
x[-1]
## [1] 0.5 1.0 1.5 2.0 2.5 3.0
# mude o valor do 6o elemento para 4.5
x[5] <- 4.5 
x[5]
## [1] 4.5

Podemos também aplicar funções (aritméticas, estatísticas…) em um vetor ou entre eles. Vamos tentar algumas.

XX <- x + 3
x * XX
## [1]  0.00  1.75  4.00  6.75 33.75 13.75 18.00
mean(x + XX)/2
## [1] 3.357143
max(XX)
## [1] 7.5
min(x)
## [1] 0
sum(x)
## [1] 13
sqrt(x^2)
## [1] 0.0 0.5 1.0 1.5 4.5 2.5 3.0
log(XX)
## [1] 1.098612 1.252763 1.386294 1.504077 2.014903 1.704748 1.791759

Os vetores (e outros objetos no R) algumas vezes possuem um terceiro atributo: nomes. Os nomes são muito importantes para as análises filogenéticas.

SVL <- rnorm(15, mean = 10, sd = 1)
sp <- c('Arachne', 'Minotaur', 'Cerberus', 'Medusa',
        'Chimera', 'Lamia', 'Sirens', 'Phoenix',
        'Python', 'Pegasus', 'Unicorn', 'Sphinx',
        'Hydra', 'Harpy', 'Griffin')
names(SVL) <- sp  
attributes(SVL)
## $names
##  [1] "Arachne"  "Minotaur" "Cerberus" "Medusa"   "Chimera"  "Lamia"   
##  [7] "Sirens"   "Phoenix"  "Python"   "Pegasus"  "Unicorn"  "Sphinx"  
## [13] "Hydra"    "Harpy"    "Griffin"
SVL
##   Arachne  Minotaur  Cerberus    Medusa   Chimera     Lamia    Sirens 
## 10.414992 11.954215  9.286578 10.363953 10.419632 10.456358 10.047626 
##   Phoenix    Python   Pegasus   Unicorn    Sphinx     Hydra     Harpy 
## 10.812628  9.950867 11.000295 10.002505  8.503102  9.241081  9.643092 
##   Griffin 
## 10.944143

4.2 Matriz

As matrizes nada mais são do que vetores em um formato tabular. Por essa razão, há um atributo adicional em razão da dimensão (dim). Vamos criar uma matriz e verificar. Para arranjar por colunas, podemos rodar o seguinte comando:

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

Outra forma seria (não vamos demonstrar para não tomar muito mais tempo, mas você pode tentar depois). M <- 1:100 dim(M) <- c(10,10)

Mas e se nossa ideia fosse arranjar por linhas, como faríamos? Agora que você já aprendeu a buscar ajuda sobre funções no R, já pode realizar esse desafio sozinho!

  • Acessando elementos de uma matriz *
M[9,3]
## [1] 29
M[ ,2]
##  [1] 11 12 13 14 15 16 17 18 19 20
M[3, ]
##  [1]  3 13 23 33 43 53 63 73 83 93

Na matriz que criamos, qual número se encontra na coluna 4, linha 3?

4.3 Data Frame

Data frame é o tipo de objeto que geralmente mais utilizamos. Ele é usado para armazenar tabelas de dados. É uma lista de vetores de mesmo tamanho. Vamos olhar o exemplo para entender melhor. Vamos criar um data frame ‘df’ com três vetores.

a <- c(2, 3, 5) 
b <- c("aa", "bb", "cc") 
c <- c(TRUE, FALSE, TRUE) 
df = data.frame(a, b, c)  

Podemos acessar os elementos do data frame da mesma forma que na matrix. Vamos usar uma base de dados que já está presente no R (iris)

iris
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            5.1         3.5          1.4         0.2     setosa
## 2            4.9         3.0          1.4         0.2     setosa
## 3            4.7         3.2          1.3         0.2     setosa
## 4            4.6         3.1          1.5         0.2     setosa
## 5            5.0         3.6          1.4         0.2     setosa
## 6            5.4         3.9          1.7         0.4     setosa
## 7            4.6         3.4          1.4         0.3     setosa
## 8            5.0         3.4          1.5         0.2     setosa
## 9            4.4         2.9          1.4         0.2     setosa
## 10           4.9         3.1          1.5         0.1     setosa
## 11           5.4         3.7          1.5         0.2     setosa
## 12           4.8         3.4          1.6         0.2     setosa
## 13           4.8         3.0          1.4         0.1     setosa
## 14           4.3         3.0          1.1         0.1     setosa
## 15           5.8         4.0          1.2         0.2     setosa
## 16           5.7         4.4          1.5         0.4     setosa
## 17           5.4         3.9          1.3         0.4     setosa
## 18           5.1         3.5          1.4         0.3     setosa
## 19           5.7         3.8          1.7         0.3     setosa
## 20           5.1         3.8          1.5         0.3     setosa
## 21           5.4         3.4          1.7         0.2     setosa
## 22           5.1         3.7          1.5         0.4     setosa
## 23           4.6         3.6          1.0         0.2     setosa
## 24           5.1         3.3          1.7         0.5     setosa
## 25           4.8         3.4          1.9         0.2     setosa
## 26           5.0         3.0          1.6         0.2     setosa
## 27           5.0         3.4          1.6         0.4     setosa
## 28           5.2         3.5          1.5         0.2     setosa
## 29           5.2         3.4          1.4         0.2     setosa
## 30           4.7         3.2          1.6         0.2     setosa
## 31           4.8         3.1          1.6         0.2     setosa
## 32           5.4         3.4          1.5         0.4     setosa
## 33           5.2         4.1          1.5         0.1     setosa
## 34           5.5         4.2          1.4         0.2     setosa
## 35           4.9         3.1          1.5         0.2     setosa
## 36           5.0         3.2          1.2         0.2     setosa
## 37           5.5         3.5          1.3         0.2     setosa
## 38           4.9         3.6          1.4         0.1     setosa
## 39           4.4         3.0          1.3         0.2     setosa
## 40           5.1         3.4          1.5         0.2     setosa
## 41           5.0         3.5          1.3         0.3     setosa
## 42           4.5         2.3          1.3         0.3     setosa
## 43           4.4         3.2          1.3         0.2     setosa
## 44           5.0         3.5          1.6         0.6     setosa
## 45           5.1         3.8          1.9         0.4     setosa
## 46           4.8         3.0          1.4         0.3     setosa
## 47           5.1         3.8          1.6         0.2     setosa
## 48           4.6         3.2          1.4         0.2     setosa
## 49           5.3         3.7          1.5         0.2     setosa
## 50           5.0         3.3          1.4         0.2     setosa
## 51           7.0         3.2          4.7         1.4 versicolor
## 52           6.4         3.2          4.5         1.5 versicolor
## 53           6.9         3.1          4.9         1.5 versicolor
## 54           5.5         2.3          4.0         1.3 versicolor
## 55           6.5         2.8          4.6         1.5 versicolor
## 56           5.7         2.8          4.5         1.3 versicolor
## 57           6.3         3.3          4.7         1.6 versicolor
## 58           4.9         2.4          3.3         1.0 versicolor
## 59           6.6         2.9          4.6         1.3 versicolor
## 60           5.2         2.7          3.9         1.4 versicolor
## 61           5.0         2.0          3.5         1.0 versicolor
## 62           5.9         3.0          4.2         1.5 versicolor
## 63           6.0         2.2          4.0         1.0 versicolor
## 64           6.1         2.9          4.7         1.4 versicolor
## 65           5.6         2.9          3.6         1.3 versicolor
## 66           6.7         3.1          4.4         1.4 versicolor
## 67           5.6         3.0          4.5         1.5 versicolor
## 68           5.8         2.7          4.1         1.0 versicolor
## 69           6.2         2.2          4.5         1.5 versicolor
## 70           5.6         2.5          3.9         1.1 versicolor
## 71           5.9         3.2          4.8         1.8 versicolor
## 72           6.1         2.8          4.0         1.3 versicolor
## 73           6.3         2.5          4.9         1.5 versicolor
## 74           6.1         2.8          4.7         1.2 versicolor
## 75           6.4         2.9          4.3         1.3 versicolor
## 76           6.6         3.0          4.4         1.4 versicolor
## 77           6.8         2.8          4.8         1.4 versicolor
## 78           6.7         3.0          5.0         1.7 versicolor
## 79           6.0         2.9          4.5         1.5 versicolor
## 80           5.7         2.6          3.5         1.0 versicolor
## 81           5.5         2.4          3.8         1.1 versicolor
## 82           5.5         2.4          3.7         1.0 versicolor
## 83           5.8         2.7          3.9         1.2 versicolor
## 84           6.0         2.7          5.1         1.6 versicolor
## 85           5.4         3.0          4.5         1.5 versicolor
## 86           6.0         3.4          4.5         1.6 versicolor
## 87           6.7         3.1          4.7         1.5 versicolor
## 88           6.3         2.3          4.4         1.3 versicolor
## 89           5.6         3.0          4.1         1.3 versicolor
## 90           5.5         2.5          4.0         1.3 versicolor
## 91           5.5         2.6          4.4         1.2 versicolor
## 92           6.1         3.0          4.6         1.4 versicolor
## 93           5.8         2.6          4.0         1.2 versicolor
## 94           5.0         2.3          3.3         1.0 versicolor
## 95           5.6         2.7          4.2         1.3 versicolor
## 96           5.7         3.0          4.2         1.2 versicolor
## 97           5.7         2.9          4.2         1.3 versicolor
## 98           6.2         2.9          4.3         1.3 versicolor
## 99           5.1         2.5          3.0         1.1 versicolor
## 100          5.7         2.8          4.1         1.3 versicolor
## 101          6.3         3.3          6.0         2.5  virginica
## 102          5.8         2.7          5.1         1.9  virginica
## 103          7.1         3.0          5.9         2.1  virginica
## 104          6.3         2.9          5.6         1.8  virginica
## 105          6.5         3.0          5.8         2.2  virginica
## 106          7.6         3.0          6.6         2.1  virginica
## 107          4.9         2.5          4.5         1.7  virginica
## 108          7.3         2.9          6.3         1.8  virginica
## 109          6.7         2.5          5.8         1.8  virginica
## 110          7.2         3.6          6.1         2.5  virginica
## 111          6.5         3.2          5.1         2.0  virginica
## 112          6.4         2.7          5.3         1.9  virginica
## 113          6.8         3.0          5.5         2.1  virginica
## 114          5.7         2.5          5.0         2.0  virginica
## 115          5.8         2.8          5.1         2.4  virginica
## 116          6.4         3.2          5.3         2.3  virginica
## 117          6.5         3.0          5.5         1.8  virginica
## 118          7.7         3.8          6.7         2.2  virginica
## 119          7.7         2.6          6.9         2.3  virginica
## 120          6.0         2.2          5.0         1.5  virginica
## 121          6.9         3.2          5.7         2.3  virginica
## 122          5.6         2.8          4.9         2.0  virginica
## 123          7.7         2.8          6.7         2.0  virginica
## 124          6.3         2.7          4.9         1.8  virginica
## 125          6.7         3.3          5.7         2.1  virginica
## 126          7.2         3.2          6.0         1.8  virginica
## 127          6.2         2.8          4.8         1.8  virginica
## 128          6.1         3.0          4.9         1.8  virginica
## 129          6.4         2.8          5.6         2.1  virginica
## 130          7.2         3.0          5.8         1.6  virginica
## 131          7.4         2.8          6.1         1.9  virginica
## 132          7.9         3.8          6.4         2.0  virginica
## 133          6.4         2.8          5.6         2.2  virginica
## 134          6.3         2.8          5.1         1.5  virginica
## 135          6.1         2.6          5.6         1.4  virginica
## 136          7.7         3.0          6.1         2.3  virginica
## 137          6.3         3.4          5.6         2.4  virginica
## 138          6.4         3.1          5.5         1.8  virginica
## 139          6.0         3.0          4.8         1.8  virginica
## 140          6.9         3.1          5.4         2.1  virginica
## 141          6.7         3.1          5.6         2.4  virginica
## 142          6.9         3.1          5.1         2.3  virginica
## 143          5.8         2.7          5.1         1.9  virginica
## 144          6.8         3.2          5.9         2.3  virginica
## 145          6.7         3.3          5.7         2.5  virginica
## 146          6.7         3.0          5.2         2.3  virginica
## 147          6.3         2.5          5.0         1.9  virginica
## 148          6.5         3.0          5.2         2.0  virginica
## 149          6.2         3.4          5.4         2.3  virginica
## 150          5.9         3.0          5.1         1.8  virginica

A primeira linha contém os nomes das colunas (variáveis) e é chamada pela programa de ‘header’. Na horizontal estão as linhas de dados, que pode ou não começar com o nome das linhas. Por exemplo, em análises filogenéticas cada linha corresponderia a uma espécie. Cada dado de uma linha é chamada de célula. Para acessar o dado de uma célula, é possível usar as coordenadas de linha e coluna separadas por vírgulas entre colchetes ‘[]’. A exemplo da matriz, a ordem de linha e coluna é importante.

iris[1, 2] 
## [1] 3.5

Adicionalmente, podemos usar os nomes das linhas e colunas em vez das coordenadas numéricas. Vamos usar o conjunto de dados mtcars como exemplo.

mtcars
##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
## Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
## Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
## Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
## Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
## Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
## Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
## Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
## Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
## Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
## Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
## Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
## Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
mtcars["Mazda RX4", "cyl"] 
## [1] 6

Há outra maneira também de acessar apenas uma determinada coluna

iris$Sepal.Width
##   [1] 3.5 3.0 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 3.7 3.4 3.0 3.0 4.0 4.4 3.9
##  [18] 3.5 3.8 3.8 3.4 3.7 3.6 3.3 3.4 3.0 3.4 3.5 3.4 3.2 3.1 3.4 4.1 4.2
##  [35] 3.1 3.2 3.5 3.6 3.0 3.4 3.5 2.3 3.2 3.5 3.8 3.0 3.8 3.2 3.7 3.3 3.2
##  [52] 3.2 3.1 2.3 2.8 2.8 3.3 2.4 2.9 2.7 2.0 3.0 2.2 2.9 2.9 3.1 3.0 2.7
##  [69] 2.2 2.5 3.2 2.8 2.5 2.8 2.9 3.0 2.8 3.0 2.9 2.6 2.4 2.4 2.7 2.7 3.0
##  [86] 3.4 3.1 2.3 3.0 2.5 2.6 3.0 2.6 2.3 2.7 3.0 2.9 2.9 2.5 2.8 3.3 2.7
## [103] 3.0 2.9 3.0 3.0 2.5 2.9 2.5 3.6 3.2 2.7 3.0 2.5 2.8 3.2 3.0 3.8 2.6
## [120] 2.2 3.2 2.8 2.8 2.7 3.3 3.2 2.8 3.0 2.8 3.0 2.8 3.8 2.8 2.8 2.6 3.0
## [137] 3.4 3.1 3.0 3.1 3.1 3.1 2.7 3.2 3.3 3.0 2.5 3.0 3.4 3.0

E se for conveniente, separá-la em um vetor.

SW <- iris$Sepal.Width

4.4 Listas

É o tipo mais geral de estrutura de dados. Consiste em uma coleção ordenada de outros objetos (componentes). Não é necessário que o componente seja do mesmo tipo, podendo por exemplo consitir de uma matrix, um vetor, uma função e também uma árvore filogenética. Vamos ver a estrutura de uma árvore:

require(phytools)
set.seed(1)
tree<-pbtree(b=1,d=0.2,n=30)
plotTree(tree)

str(tree)
## List of 4
##  $ edge       : int [1:74, 1:2] 39 40 40 41 42 43 43 44 44 42 ...
##  $ Nnode      : int 37
##  $ tip.label  : chr [1:38] "t3" "t11" "t24" "t25" ...
##  $ edge.length: num [1:74] 2.8112 0.3507 1.0663 1.0831 0.0534 ...
##  - attr(*, "class")= chr "phylo"
##  - attr(*, "order")= chr "cladewise"

Para acessar cada objeto da lista, podemos usar o operador \(. Por exemplo tree\)tip.label para os nomes dos taxons.

5.Carregando dados de arquivos no R

Há diversas funções para carregar arquivos no R. Para conjuntos de dados, normalmente usamos read.table() e read.csv(). Cada uma geralmente é usada para um tipo de dados (por exemplo csv), mas read.table() é mais geral e poderia ser customizada para ler um csv (mas para que tanto trabalho?). Lembre-se que você pode buscar informações sobre elas usando help(). Vamos tentar ler alguns dados.

phylo.data <- read.table('http://cl.ly/3O2j1H3j2c3K/data.csv', 
                         sep=',', header=TRUE, row.names=1)
head(phylo.data)
##          svl     head limblength
## t3  45.92212 5.314029   10.72143
## t11 45.49512 3.597874   16.85841
## t24 46.30994 4.403279   16.82461
## t25 46.85457 4.694902   17.04668
## t9  45.19916 4.174669   18.19975
## t29 46.98790 4.634824   12.92338

Com read.csv(), o default já considera o nome das colunas

phylo.data <- read.csv('http://cl.ly/3O2j1H3j2c3K/data.csv', 
                         row.names=1)
head(phylo.data)
##          svl     head limblength
## t3  45.92212 5.314029   10.72143
## t11 45.49512 3.597874   16.85841
## t24 46.30994 4.403279   16.82461
## t25 46.85457 4.694902   17.04668
## t9  45.19916 4.174669   18.19975
## t29 46.98790 4.634824   12.92338

Para abrir uma árvore, podemos usar read.nexus() ou read.tree(). Vamos tentar com a árvore que simulei anteriormente.

tree<-read.tree('http://cl.ly/0Q2d2z2r0b2L/tree.tre')

Você pode checar usando a função plotTree() do pacote phytools.