1.创建 tibble
-
as.tibble()
可将dataframe转换为tibble -
tibble()
直接创建
tibble 中可以使用在 R 中无效的变量名称,需要用反引号 ` 括起来
> annoying <- tibble(
+ `1` = 1:10,
+ `2` = `1` * 2 + rnorm(length(`1`))
+ )
> annoying
# A tibble: 10 x 2
`1` `2`
<int> <dbl>
1 1 1.09
2 2 3.39
3 3 7.62
4 4 8.82
5 5 8.15
6 6 14.4
7 7 16.2
8 8 15.5
9 9 18.5
10 10 20.0
使用 rename()
重命名列名
> annoying %>% rename(one = `1`, two = `2`)
# A tibble: 10 x 2
one two
<int> <dbl>
1 1 1.09
2 2 3.39
3 3 7.62
4 4 8.82
5 5 8.15
6 6 14.4
7 7 16.2
8 8 15.5
9 9 18.5
10 10 20.0
2. 打印
print()
函数打印数据框,通过 n
控制打印的行数,width
控制列数,width = Inf
可显示所有列
nycflights13::flights %>%
print(n = 10, width = Inf)
可设置默认打印方式:
-
options(tibble.print_max = n, tibble.print_min = m)
打印的行数最大为n -
options(tibble.print_min = Inf)
打印所有行 -
options(tibble.width = Inf)
打印所有列
3. 取子集
$
按列名提取变量
[[
按列名或位置提取变量
在管道中使用提取操作需要使用特殊占位符:.
> df <- tibble(
+ x = runif(5),
+ y = rnorm(5)
+ )
# 按名称提取
> df$x
[1] 0.08404261 0.76959303 0.32468308 0.52716753 0.02339395
> df[["x"]]
[1] 0.08404261 0.76959303 0.32468308 0.52716753 0.02339395
# 按位置提取
> df[[1]]
[1] 0.08404261 0.76959303 0.32468308 0.52716753 0.02339395
# 在管道操作中提取
> df %>% .$x
[1] 0.08404261 0.76959303 0.32468308 0.52716753 0.02339395
> df %>% .[[1]]
[1] 0.08404261 0.76959303 0.32468308 0.52716753 0.02339395
4. 对比 tibble 与 data.frame
- data.frame 中字符串以factor的形式保存;而tibble中仍以字符串形式保存
- data.frame 支持列名的部分匹配,而tibble中需要输入完整的列名
- data.frame 中提取的子集将以向量的形式储存,不可以提出单列数据;而tibble中可提取单列数据,仍以表格形式储存