3.2 Tibbles

La estrcutura de datos principal en el universo tidyverse, es el tibble. Son data.frames pero con ciertas mejoras y cambios que facilitan trabajar con ellos. Algunas de sus diferencias principales son:

  • Al leer un tibble no se cambia el tipo de sus inputs (stringsAsFactors en data.frames)
  • No se cambian los nombres de las variables, aunque sean nombres de variables no válidos en R o non-syntatic
  • No tienen row names
  • Por default se imprimen solamente las primeras 10 filas y las columnas que quepan en la consola, en lugar de imprimir todos los datos como lo hacen los data.frames
  • La extracción de valores utilizando [[ y $ es menos común.

Para trabajar con tibbles se requiere el paquete tibble.

library(tibble)

Las diferencias en el formato de impresión podemos verlas usando el dataset iris.

head(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
 as_tibble(iris)
## # A tibble: 150 × 5
##    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
##           <dbl>       <dbl>        <dbl>       <dbl> <fct>  
##  1          5.1         3.5          1.4         0.2 setosa 
##  2          4.9         3            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           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           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 
## # … with 140 more rows

Y también es posible crear nuestros propios tibbles de forma explícita

mi_tbl <- tibble(x = 1:8, 
                    y = x*2, 
                    z = rep(c("a1", "b1"), 4))
mi_tbl
## # A tibble: 8 × 3
##       x     y z    
##   <int> <dbl> <chr>
## 1     1     2 a1   
## 2     2     4 b1   
## 3     3     6 a1   
## 4     4     8 b1   
## 5     5    10 a1   
## 6     6    12 b1   
## 7     7    14 a1   
## 8     8    16 b1