创建一个tibble时,
tbl <- tibble(A=1:5, B=6:10)
Run Code Online (Sandbox Code Playgroud)
的结果
class(tbl)
Run Code Online (Sandbox Code Playgroud)
是
[1] "tbl_df" "tbl" "data.frame"
Run Code Online (Sandbox Code Playgroud)
我习惯看到这个,因为我使用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"
Run Code Online (Sandbox Code Playgroud)
还有一个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"
Run Code Online (Sandbox Code Playgroud)
所以我们再次看到这个东西通常可以作为一个元素,但它有其他类,以便它可以尝试在数据库引擎中完成它的所有工作,而不是操纵R本身的数据.
因此,tbl和之间并没有真正的"差异" tbl_df.后者只是说实际上如何实现tibble,因此行为可以不同(更优化).
有关更多信息,您可以查看tibble插图或扩展的tibble插图