蒂布尔斯

Tibbles是一种现代的数据帧。他们保留了经受住了时间的考验,放弃了过去的功能方便,但现在令人沮丧。

图书馆(颤抖)

创建

西藏()是创建数据帧的好方法。封装数据帧的最佳实践:

胁迫

补充西藏(),tibble提供as_tible()把物体变成藏品。一般来说,as_tible()方法比作为.data.frame()方法。列表的方法已经着眼于表现:

<- 复制(26,样品(100),简化= 错误的)
姓名(l)<-信件

定时<-长凳::作记号(
  可用(_T)(l) ,
  as.data.frame格式(l) ,
  检查= 错误的
)

定时
#>#A台:2×14#>expression min mean median max `itr/sec`mem_a…¹表达式最小平均中值最大值#><chr><bench_tm><bech_tm><bench_tm><bench.tm><dbl><bnch_>#>1个表格(…0.000287696 0.0006251376 0.000327178 0.004508219 1599.648 1840#>2作为数据来源…0.000791522 0.0016640039 0.001098172 0.007652914 600.9601 34584#>#…还有7个变量:n_gc<dbl>、n_itr<int>、total_time<bench_tm>、,#>#结果<list>、内存<list>,时间<list>和缩写#>#变量名¹mem_alloc

速度作为.data.frame()通常不是瓶颈交互使用时,但在组合数千个时可能会出现问题将杂乱的输入数据整合到一个整洁的数据帧中。

藏语与数据帧

tibles和数据帧之间有三个关键区别:打印、子设置和回收规则。

印刷

打印tible时,它只显示前十行和所有适合一个屏幕的列。它还打印缩写列类型的描述,并使用字体样式和颜色突出显示:

易怒的(x个= -5:100,年= 123.456 *(^x) )
#>#A桥:106×2
#>x年
#><int><dbl>
#>  1    -5    0.5080494
#>  2    -4    1.524148
#>  3    -3    4.572444
#>  4    -2   13.71733
#>  5    -1   41.152
#>  6     0  123.456
#>  7     1  370.368
#>  8     2 1111.104
#>  9     3 3333.312
#> 10     4 9999.936
#>#…还有96行

默认情况下,数字以三个有效数字显示,并且表示分数存在的尾随点组件。

可以使用以下选项控制默认外观:

请参见?柱::柱选项?tible_options(选项)对于可用选项,渐晕(“类型”)有关类型的概述缩写,渐晕(“数字”)有关的详细信息数字格式,以及渐晕图(“数字”)对于与数据帧打印进行比较。

子集

Tibbles对subsetting非常严格。[总是返回另一个tibble。将其与数据帧进行对比:有时[返回数据帧,有时只返回矢量:

数据框1<- 数据帧(x个= 1:,年= :1)
(df1[,1:2])
#>[1]“data.frame”(数据帧)
(df1[,1])
#>[1]“整数”

数据框2<- 易怒的(x个= 1:,年= :1)
(df2[,1:2])
#>[1]“tbl_df”“tbl”“data.frame”
(df2[,1])
#>[1]“tbl_df”“tbl”“data.frame”

要提取单个列,请使用[[$:

(df2[[1]])
#>[1]“整数”
(df2$x)
#>[1]“整数”

藏语对$Tibbles永远不会部分匹配,并将引发警告并返回无效的如果列不存在:

数据流<- 数据帧(美国广播公司= 1)
数据流$
#> [1] 1

数据框2<- 易怒的(美国广播公司= 1)
数据框2$
#>警告:未知或未初始化的列:`a`。
#>空

然而,tibbles尊重如果它是提供:

数据帧(一个= 1:)[,“a”,下降= 真的]
#> [1] 1 2 3
易怒的(一个= 1:)[,“a”,下降= 真的]
#> [1] 1 2 3

藏文不支持行名称。转换为时将删除它们一个可继承的或当被继承时:

数据流<- 数据帧(一个= 1:,行名称=信件[1:])
行名称(df)
#>[1]“a”“b”“c”
行名称(as_表格(df))
#> [1] "1" "2" "3"

tbl(待定)<- 易怒的(一个= 1:)
行名称(待定)<-信件[1:]
#>警告:不推荐在tible上设置行名称。
行名称(待定)
#>[1]“a”“b”“c”
行名称(待定)[1, ])
#> [1] "1"

请参见渐晕(“不变量”)进行详细比较tibbles和数据帧之间。

回收

构造tible时,仅回收长度为1的值。这个长度不同于1的第一列决定行数在tibble中,冲突会导致错误:

易怒的(一个= 1,b条= 1:)
#>#A台:3×2
#>a b类
#><dbl><int>
#> 1     1     1
#> 2     1     2
#> 3     1     3
易怒的(一个= 1:,b条= 1)
#>#A台:3×2
#>a b类
#><int><dbl>
#> 1     1     1
#> 2     2     1
#> 3     3     1
易怒的(一个= 1:,c(c)= 1:2)
#>“tible()”中的错误:
#> ! Tibble列必须具有兼容的大小。
#>•尺寸3:现有数据。
#>•尺寸2:列`c`。
#> 仅回收大小为1的值。

这也适用于具有行,这是有时对编程很重要:

易怒的(一个= 1,b条= 整数())
#>#A位:0×2
#>#…带2个变量:a<dbl>,b<int>
易怒的(一个= 整数(),b条= 1)
#>#A位:0×2
#>#…带2个变量:a<int>,b<dbl>

算术运算

与数据帧不同,tibbles不支持对所有列。结果以静默方式强制到数据帧。不要依赖对于这种行为,它可能会在即将发布的版本中成为一个错误。

tbl(待定)<- 易怒的(一个= 1:,b条= 4:6)
tbl(待定)* 2
#>a b
#> 1 2  8
#> 2 4 10
#> 3 6 12