如何在没有 row.names / 行号的情况下打印 tibble

Sam*_*rke 5 r tibble

Tibbles 打印时使用行号作为行名称。请参阅1, 2下面的左边距:

tibble::as_tibble(mtcars)

# A tibble: 32 x 11
     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 1  21       6  160    110  3.9   2.62  16.5     0     1     4     4
 2  21       6  160    110  3.9   2.88  17.0     0     1     4     4
Run Code Online (Sandbox Code Playgroud)

我可以在争论tibble:::print.tbl()或其他情况下禁止打印这些数字吗?我知道我可以使用:row.names = FALSE中的参数,但是我没有得到它作为小标题的所有其他不错的打印选项,它只是像常规 data.frame 一样打印。print.data.frameprint.data.frame(as_tibble(mtcars), row.names = FALSE)

我想保持输出与print.tbl()上面的输出相同,但没有行号。

Ian*_*ell 2

行名称由pillar::squeeze. 您可以创建一个副本squeeze此处为源代码),并注释掉相关部分:

\n
squeeze <- function(x, width = NULL, ...) {\n  zero_height <- length(x) == 0L || length(x[[1]]) == 0L\n  if (zero_height) {\n    return(new_colonnade_sqeezed(list(), colonnade = x, extra_cols = seq_along(x)))}\n  if (is.null(width)) {width <- pillar:::get_width(x)}\n  if (is.null(width)) {width <- getOption("width")}\n  rowid <- pillar:::get_rowid_from_colonnade(x)\n  if (is.null(rowid)) {\n    rowid_width <- 0 } \n  else { rowid_width <- max(pillar:::get_widths(rowid)) + 1L }\n  col_widths <- pillar:::colonnade_get_width(x, width, rowid_width)\n  col_widths_show <- split(col_widths, factor(col_widths$tier != 0, levels = c(FALSE, TRUE)))\n  col_widths_shown <- col_widths_show[["TRUE"]]\n  col_widths_tiers <- split(col_widths_shown, col_widths_shown$tier)\n  out <- map(col_widths_tiers, function(tier) {\n    map2(tier$pillar, tier$width, pillar:::pillar_format_parts)\n  })\n  #if (!is.null(rowid)) {\n  #  rowid_formatted <- pillar:::pillar_format_parts(rowid, rowid_width - 1L)\n  #  out <- map(out, function(x) c(list(rowid_formatted), x))\n  #}\n  extra_cols <- rlang:::seq2(nrow(col_widths_shown) + 1L, length(x))\n  pillar:::new_colonnade_sqeezed(out, colonnade = x, extra_cols = extra_cols)\n}\n
Run Code Online (Sandbox Code Playgroud)\n

然后将新版本分配到pillar命名空间中,就可以了。

\n
library(tidyverse)\nassignInNamespace("squeeze", squeeze, ns = "pillar")\nas_tibble(mtcars)\n# A tibble: 32 x 11\n  mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb\n<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>\n 21       6  160    110  3.9   2.62  16.5     0     1     4     4\n 21       6  160    110  3.9   2.88  17.0     0     1     4     4\n 22.8     4  108     93  3.85  2.32  18.6     1     1     4     1\n 21.4     6  258    110  3.08  3.22  19.4     1     0     3     1\n 18.7     8  360    175  3.15  3.44  17.0     0     0     3     2\n 18.1     6  225    105  2.76  3.46  20.2     1     0     3     1\n 14.3     8  360    245  3.21  3.57  15.8     0     0     3     4\n 24.4     4  147.    62  3.69  3.19  20       1     0     4     2\n 22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2\n 19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4\n# \xe2\x80\xa6 with 22 more rows\n
Run Code Online (Sandbox Code Playgroud)\n