r语言 - 在整洁中,类"tbl"的对象和"tbl_df"类的对象有什么区别?

  • 本文关键字:对象 tbl df 区别 r语言 r dplyr tibble
  • 更新时间 :
  • 英文 :


创建 tibble 时,

tbl <- tibble(A=1:5, B=6:10)

结果

class(tbl)

[1] "tbl_df"     "tbl"        "data.frame"

我已经习惯了看到这一点,因为我经常使用 dplyr。但是什么时候对象只是一个"tbl"(而不是"tbl_df"(反之亦然?我只是想更多地了解差异,如果有的话。

任何文档将不胜感激!

您可以将"tibble"视为接口。如果一个对象可以响应所有的 tibble 操作,那么你可以把它看作是一个 tibble。R 没有强类型。

所以tbl是通用的tibble,tbl_df是一种特定类型的tibble,基本上将其数据存储在data.frame中。

还有其他软件包,例如dtplyr,可让您像tibble一样行事,但将数据存储在data.table中。例如

library(dtplyr)
ds <- tbl_dt(mtcars)
class(ds)
# [1] "tbl_dt"     "tbl"        "data.table" "data.frame"

还有一个dbplyr包,它允许你使用SQL数据库后端。例如

library(dplyr)
con <- DBI::dbConnect(RSQLite::SQLite(), path = ":memory:")
copy_to(con, mtcars, "mtcars",temporary = FALSE)
cars_db <- tbl(con, "mtcars")
class(cars_db)
# [1] "tbl_dbi"  "tbl_sql"  "tbl_lazy" "tbl"  

因此,我们再次看到,这个东西通常可以充当 tibble,但它还有其他类,以便它可以尝试在数据库引擎中完成所有工作,而不是在 R 本身中操作数据。

所以tbltbl_df之间并没有真正的"区别"。后者只是说tibble实际上是如何实现的,因此行为可以不同(更优化(。

有关更多信息,您可以查看 tibble 晕影或扩展 tibble 晕影

最新更新