Search code examples
rtibble

Suppressing the column classes for "tibbles"


How do you suppress the column classes when displaying tibbles? For example,

> cars <- as_tibble(mtcars)
> cars
# 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>  # <-- I don't want to show this row
 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
 3  22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
 4  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
 5  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
 6  18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
 7  14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
 8  24.4     4  147.    62  3.69  3.19  20       1     0     4     2
 9  22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
10  19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
# ... with 22 more rows

Is there a global option? Something along the lines of options("show.tibble.column.classes"=FALSE).

I'd also like to remove them for all output created from a tibble (tbl_df).

> count(cars, cyl)
# A tibble: 3 x 2
    cyl     n
  <dbl> <int>  # <-- omit this row totally.
1     4    11
2     6     7
3     8    14

Solution

  • Is this what you want?

    cat(format(as_tibble(mtcars))[-3L], sep = "\n")
    

    Output

    # A tibble: 32 x 11
         mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
     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
     3  22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
     4  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
     5  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
     6  18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
     7  14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
     8  24.4     4  147.    62  3.69  3.19  20       1     0     4     2
     9  22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
    10  19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
    # ... with 22 more rows
    

    Explanations

    ?tibble::print.tbl shows that the class tbl_df is associated with the following format method:

    Usage
    
    ## S3 method for class 'tbl_df'
    format(x, ..., n = NULL, width = NULL, n_extra = NULL)
    

    The format method converts a tibble into a character vector, each element of which is a line to be printed. The third line is for variable types. To get the desired output, we just need to remove that line and cat() the rest as is.