学习更多的tibble知识,vignette(“tibble”)
(除了打印好看点,好像没发现tibble多有用?)
library(tidyverse)
## Warning: 程辑包'tidyverse'是用R版本3.5.1 来建造的
## -- Attaching packages -------------------------------------------------------- tidyverse 1.2.1 --
## √ ggplot2 2.2.1 √ purrr 0.2.5
## √ tibble 1.4.2 √ dplyr 0.7.6
## √ tidyr 0.8.1 √ stringr 1.3.1
## √ readr 1.1.1 √ forcats 0.3.0
## Warning: 程辑包'tidyr'是用R版本3.5.1 来建造的
## Warning: 程辑包'readr'是用R版本3.5.1 来建造的
## Warning: 程辑包'forcats'是用R版本3.5.1 来建造的
## -- Conflicts ----------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
创建Tibble
tidyverse包里所有的函数,创建的都是tibble;
如果要强制转换data.frame,使用
as_tibble(iris)
## # A tibble: 150 x 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
也可以使用tibble()来创建
tibble(
x = 1:5,
y = 1,
z = x ^ 2 + y
)
## # A tibble: 5 x 3
## x y z
## <int> <dbl> <dbl>
## 1 1 1 2
## 2 2 1 5
## 3 3 1 10
## 4 4 1 17
## 5 5 1 26
Tibble和data.frame的异同
打印
在打印大数据时,不会overwhelm your console
构造子集
df <- tibble(
x = runif(5),
y = rnorm(5)
)
df$x
## [1] 0.5652198 0.3483937 0.4660307 0.4830957 0.9444043
df[["x"]]
## [1] 0.5652198 0.3483937 0.4660307 0.4830957 0.9444043
df[[1]]
## [1] 0.5652198 0.3483937 0.4660307 0.4830957 0.9444043
在pipe中应用时,前面需要有个句点
df %>% .$x
## [1] 0.5652198 0.3483937 0.4660307 0.4830957 0.9444043
df %>% .[["x"]]
## [1] 0.5652198 0.3483937 0.4660307 0.4830957 0.9444043
tibble在使用$引用子集时,不能使用部分匹配,必须全部匹配。
从tibble转回到data.frame
class(df)
## [1] "tbl_df" "tbl" "data.frame"
class(as.data.frame(df))
## [1] "data.frame"