gpt4 book ai didi

r - 在 tidyverse 中,类 "tbl"和 "tbl_df"的对象有什么区别?

转载 作者:行者123 更新时间:2023-12-05 08:32:18 24 4
gpt4 key购买 nike

创建小标题时,

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

结果

class(tbl)

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

我经常看到这个,因为我经常使用 dplyr。但是什么时候一个对象只是一个“tbl”(而不是一个“tbl_df”),反之亦然?如果有的话,我只想知道更多关于差异的信息。

任何文件将不胜感激!

最佳答案

您可以将“tibble”视为一个界面。如果一个对象可以响应所有的 tibble Action ,那么你可以认为它是一个 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 vignetteextending tibble vignette

关于r - 在 tidyverse 中,类 "tbl"和 "tbl_df"的对象有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51749664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com