我想创建一个以某种方式打印tibble个对象的类,本质上是在调用时打印存储在包中的所有一些数据集.我不知道如何让它发挥作用.

这是我目前的状态,try 了下面的变体,但没有成功.

理想情况下,这将像普通tbl_df一样打印zz,但具有指定的行数(在本例中为n = 3)

library(tibble)

long_tibble <- setClass(
  Class = "long_tibble",
  slots = c(tab = "tbl_df"),
  contains = "tbl_df"
)

print.long_tibble <- function(x){
  x@tab |>
    tibble::as_tibble() |>
    print(n = 3)
}

zz <- tibble::tibble(a = 1:10)
class(zz) <- "long_tibble"
zz
#> Error in x@tab: no applicable method for `@` applied to an object of class "long_tibble"

xx <- long_tibble(tab = zz)
#> Error in as(slotVal, slotClass, strict = FALSE): no method or default for coercing "long_tibble" to "tbl_df"
zz
#> Error in x@tab: no applicable method for `@` applied to an object of class "long_tibble"

创建于2024年4月12日,共有reprex v2.0.2

idea /祈祷?🙏🏼

推荐答案

我对setClass()不熟悉,但我认为您可以使用S3方法调度来做您想要的事情:

library(tibble)

print.long_tibble <- function(x){
  x |>
    tibble::as_tibble() |>
    print(n = 3)
}

zz <- tibble::tibble(a = 1:10)
class(zz) <- c("long_tibble", class(zz))
zz
#> # A tibble: 10 × 1
#>       a
#>   <int>
#> 1     1
#> 2     2
#> 3     3
#> # ℹ 7 more rows

以防您错过,print() for tibble还提供了要显示的行和列数的额外选项(除其他外):https://tibble.tidyverse.org/reference/formatting.html

R相关问答推荐

从有序数据中随机抽样

如何在ggplot 2线性图的每个方面显示每个组的误差条?

如何删除R中除某些特定名称外的所有字符串?

x[[1]]中的错误:脚注越界

R Markdown中的交叉引用表

为什么在ggplot2中添加geom_text这么慢?

筛选出以特定顺序患病的个体

如何在R中对深度嵌套的tibbles中的非空连续行求和?

在组中添加值增加和减少的行

par函数中的缩写,比如mgp,mar,mai是如何被破译的?

如何提取所有完美匹配的10个核苷酸在一个成对的匹配与生物字符串在R?>

SHINY:使用JS函数应用的CSS样式显示HTML表格

如何基于两个条件从一列中提取行

给定开始日期和月份(数字),如何根据R中的开始日期和月数创建日期列

使用Scale_*_MANUAL时在图例中保留未使用的系数级别

将全局环境变量的名称分配给列表中的所有元素

R+reprex:在呈现R标记文件时创建可重现的示例

计算多变量的加权和

R try Catch in the loop-跳过缺少的值并创建一个DF,显示跳过的内容

如何创建直方图与对齐的每月箱?