Skip to content

tab_row_group() does not recognize row names #1535

@petzi53

Description

@petzi53

Description

I followed exactly your tutorial Introduction to Creating gt Tables. In code chunk 8 about the tab_row_group() I got an error: (The code works if I replace row names with row numbers as in the first call to tab_row_group() in the tutorial example.

Error in resolver_stop_on_character():
! The following row(s) do not exist in the data: Australia, Greenland.
Run rlang::last_trace() to see where the error occurred.

rlang::last_trace()
<error/rlang_error>
Error in resolver_stop_on_character():
! The following row(s) do not exist in the data: Australia, Greenland.


Backtrace:

  1. ├─base::source(...)
  2. │ ├─base::withVisible(eval(ei, envir))
  3. │ └─base::eval(ei, envir)
  4. │ └─base::eval(ei, envir)
  5. ├─gt::tab_row_group(...) at _archive/Test Files/gt-test.R:27:1
  6. │ └─gt:::stop_if_not_gt_tbl(data = data)
  7. │ └─gt:::is_gt_tbl(data = data)
  8. └─gt::tab_row_group(...)
  9. └─gt:::resolve_rows_i(expr = !!row_expr, data = data)
  10. └─gt:::resolve_rows_l(...)
    
  11.   └─gt:::normalize_resolved(...)
    
  12.     └─gt:::resolver_stop_on_character(item_label = item_label, unknown_resolved = unknown_resolved)
    

Run rlang::last_trace(drop = FALSE) to see 2 hidden frames.

Reproducible example

## Code Chunk 1 #######

# Take the `islands` dataset and use some
# dplyr functionality to obtain the ten
# biggest islands in the world
islands_tbl <-
    tibble::tibble(
        name = names(islands),
        size = islands
    ) |>
    dplyr::arrange(desc(size)) |>
    dplyr::slice(1:10)

## Code Chunk 2 ########

# Create a display table showing ten of
# the largest islands in the world
gt_tbl <- gt::gt(islands_tbl)


## Code Chunk 8 #######

# Create three row groups with the
# `tab_row_group()` function
gt_tbl <-
    gt_tbl |>
    gt::tab_row_group(
        label = "continent",
        rows = 1:6
    ) |>
    gt::tab_row_group(
        label = "country",
        rows = c("Australia", "Greenland")
    ) |>
    gt::tab_row_group(
        label = "subregion",
        rows = c("New Guinea", "Borneo")
    )
#> Error in `resolver_stop_on_character()`:
#> ! The following row(s) do not exist in the data: Australia, Greenland.
#> Backtrace:
#>      ▆
#>   1. ├─gt::tab_row_group(...)
#>   2. │ └─gt:::stop_if_not_gt_tbl(data = data)
#>   3. │   └─gt:::is_gt_tbl(data = data)
#>   4. └─gt::tab_row_group(...)
#>   5.   └─gt:::resolve_rows_i(expr = !!row_expr, data = data)
#>   6.     └─gt:::resolve_rows_l(...)
#>   7.       └─gt:::normalize_resolved(...)
#>   8.         └─gt:::resolver_stop_on_character(item_label = item_label, unknown_resolved = unknown_resolved)
#>   9.           └─cli::cli_abort("The following {item_label}(s) do not exist in the data:\n    {paste0(unknown_resolved, collapse = ', ')}.")
#>  10.             └─rlang::abort(...)

# Show the gt table
gt_tbl
<style>#dtifgqbmsk table { font-family: system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #dtifgqbmsk thead, #dtifgqbmsk tbody, #dtifgqbmsk tfoot, #dtifgqbmsk tr, #dtifgqbmsk td, #dtifgqbmsk th { border-style: none; } #dtifgqbmsk p { margin: 0; padding: 0; } #dtifgqbmsk .gt_table { display: table; border-collapse: collapse; line-height: normal; margin-left: auto; margin-right: auto; color: #333333; font-size: 16px; font-weight: normal; font-style: normal; background-color: #FFFFFF; width: auto; border-top-style: solid; border-top-width: 2px; border-top-color: #A8A8A8; border-right-style: none; border-right-width: 2px; border-right-color: #D3D3D3; border-bottom-style: solid; border-bottom-width: 2px; border-bottom-color: #A8A8A8; border-left-style: none; border-left-width: 2px; border-left-color: #D3D3D3; } #dtifgqbmsk .gt_caption { padding-top: 4px; padding-bottom: 4px; } #dtifgqbmsk .gt_title { color: #333333; font-size: 125%; font-weight: initial; padding-top: 4px; padding-bottom: 4px; padding-left: 5px; padding-right: 5px; border-bottom-color: #FFFFFF; border-bottom-width: 0; } #dtifgqbmsk .gt_subtitle { color: #333333; font-size: 85%; font-weight: initial; padding-top: 3px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; border-top-color: #FFFFFF; border-top-width: 0; } #dtifgqbmsk .gt_heading { background-color: #FFFFFF; text-align: center; border-bottom-color: #FFFFFF; border-left-style: none; border-left-width: 1px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 1px; border-right-color: #D3D3D3; } #dtifgqbmsk .gt_bottom_border { border-bottom-style: solid; border-bottom-width: 2px; border-bottom-color: #D3D3D3; } #dtifgqbmsk .gt_col_headings { border-top-style: solid; border-top-width: 2px; border-top-color: #D3D3D3; border-bottom-style: solid; border-bottom-width: 2px; border-bottom-color: #D3D3D3; border-left-style: none; border-left-width: 1px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 1px; border-right-color: #D3D3D3; } #dtifgqbmsk .gt_col_heading { color: #333333; background-color: #FFFFFF; font-size: 100%; font-weight: normal; text-transform: inherit; border-left-style: none; border-left-width: 1px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 1px; border-right-color: #D3D3D3; vertical-align: bottom; padding-top: 5px; padding-bottom: 6px; padding-left: 5px; padding-right: 5px; overflow-x: hidden; } #dtifgqbmsk .gt_column_spanner_outer { color: #333333; background-color: #FFFFFF; font-size: 100%; font-weight: normal; text-transform: inherit; padding-top: 0; padding-bottom: 0; padding-left: 4px; padding-right: 4px; } #dtifgqbmsk .gt_column_spanner_outer:first-child { padding-left: 0; } #dtifgqbmsk .gt_column_spanner_outer:last-child { padding-right: 0; } #dtifgqbmsk .gt_column_spanner { border-bottom-style: solid; border-bottom-width: 2px; border-bottom-color: #D3D3D3; vertical-align: bottom; padding-top: 5px; padding-bottom: 5px; overflow-x: hidden; display: inline-block; width: 100%; } #dtifgqbmsk .gt_spanner_row { border-bottom-style: hidden; } #dtifgqbmsk .gt_group_heading { padding-top: 8px; padding-bottom: 8px; padding-left: 5px; padding-right: 5px; color: #333333; background-color: #FFFFFF; font-size: 100%; font-weight: initial; text-transform: inherit; border-top-style: solid; border-top-width: 2px; border-top-color: #D3D3D3; border-bottom-style: solid; border-bottom-width: 2px; border-bottom-color: #D3D3D3; border-left-style: none; border-left-width: 1px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 1px; border-right-color: #D3D3D3; vertical-align: middle; text-align: left; } #dtifgqbmsk .gt_empty_group_heading { padding: 0.5px; color: #333333; background-color: #FFFFFF; font-size: 100%; font-weight: initial; border-top-style: solid; border-top-width: 2px; border-top-color: #D3D3D3; border-bottom-style: solid; border-bottom-width: 2px; border-bottom-color: #D3D3D3; vertical-align: middle; } #dtifgqbmsk .gt_from_md > :first-child { margin-top: 0; } #dtifgqbmsk .gt_from_md > :last-child { margin-bottom: 0; } #dtifgqbmsk .gt_row { padding-top: 8px; padding-bottom: 8px; padding-left: 5px; padding-right: 5px; margin: 10px; border-top-style: solid; border-top-width: 1px; border-top-color: #D3D3D3; border-left-style: none; border-left-width: 1px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 1px; border-right-color: #D3D3D3; vertical-align: middle; overflow-x: hidden; } #dtifgqbmsk .gt_stub { color: #333333; background-color: #FFFFFF; font-size: 100%; font-weight: initial; text-transform: inherit; border-right-style: solid; border-right-width: 2px; border-right-color: #D3D3D3; padding-left: 5px; padding-right: 5px; } #dtifgqbmsk .gt_stub_row_group { color: #333333; background-color: #FFFFFF; font-size: 100%; font-weight: initial; text-transform: inherit; border-right-style: solid; border-right-width: 2px; border-right-color: #D3D3D3; padding-left: 5px; padding-right: 5px; vertical-align: top; } #dtifgqbmsk .gt_row_group_first td { border-top-width: 2px; } #dtifgqbmsk .gt_row_group_first th { border-top-width: 2px; } #dtifgqbmsk .gt_summary_row { color: #333333; background-color: #FFFFFF; text-transform: inherit; padding-top: 8px; padding-bottom: 8px; padding-left: 5px; padding-right: 5px; } #dtifgqbmsk .gt_first_summary_row { border-top-style: solid; border-top-color: #D3D3D3; } #dtifgqbmsk .gt_first_summary_row.thick { border-top-width: 2px; } #dtifgqbmsk .gt_last_summary_row { padding-top: 8px; padding-bottom: 8px; padding-left: 5px; padding-right: 5px; border-bottom-style: solid; border-bottom-width: 2px; border-bottom-color: #D3D3D3; } #dtifgqbmsk .gt_grand_summary_row { color: #333333; background-color: #FFFFFF; text-transform: inherit; padding-top: 8px; padding-bottom: 8px; padding-left: 5px; padding-right: 5px; } #dtifgqbmsk .gt_first_grand_summary_row { padding-top: 8px; padding-bottom: 8px; padding-left: 5px; padding-right: 5px; border-top-style: double; border-top-width: 6px; border-top-color: #D3D3D3; } #dtifgqbmsk .gt_last_grand_summary_row_top { padding-top: 8px; padding-bottom: 8px; padding-left: 5px; padding-right: 5px; border-bottom-style: double; border-bottom-width: 6px; border-bottom-color: #D3D3D3; } #dtifgqbmsk .gt_striped { background-color: rgba(128, 128, 128, 0.05); } #dtifgqbmsk .gt_table_body { border-top-style: solid; border-top-width: 2px; border-top-color: #D3D3D3; border-bottom-style: solid; border-bottom-width: 2px; border-bottom-color: #D3D3D3; } #dtifgqbmsk .gt_footnotes { color: #333333; background-color: #FFFFFF; border-bottom-style: none; border-bottom-width: 2px; border-bottom-color: #D3D3D3; border-left-style: none; border-left-width: 2px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 2px; border-right-color: #D3D3D3; } #dtifgqbmsk .gt_footnote { margin: 0px; font-size: 90%; padding-top: 4px; padding-bottom: 4px; padding-left: 5px; padding-right: 5px; } #dtifgqbmsk .gt_sourcenotes { color: #333333; background-color: #FFFFFF; border-bottom-style: none; border-bottom-width: 2px; border-bottom-color: #D3D3D3; border-left-style: none; border-left-width: 2px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 2px; border-right-color: #D3D3D3; } #dtifgqbmsk .gt_sourcenote { font-size: 90%; padding-top: 4px; padding-bottom: 4px; padding-left: 5px; padding-right: 5px; } #dtifgqbmsk .gt_left { text-align: left; } #dtifgqbmsk .gt_center { text-align: center; } #dtifgqbmsk .gt_right { text-align: right; font-variant-numeric: tabular-nums; } #dtifgqbmsk .gt_font_normal { font-weight: normal; } #dtifgqbmsk .gt_font_bold { font-weight: bold; } #dtifgqbmsk .gt_font_italic { font-style: italic; } #dtifgqbmsk .gt_super { font-size: 65%; } #dtifgqbmsk .gt_footnote_marks { font-size: 75%; vertical-align: 0.4em; position: initial; } #dtifgqbmsk .gt_asterisk { font-size: 100%; vertical-align: 0; } #dtifgqbmsk .gt_indent_1 { text-indent: 5px; } #dtifgqbmsk .gt_indent_2 { text-indent: 10px; } #dtifgqbmsk .gt_indent_3 { text-indent: 15px; } #dtifgqbmsk .gt_indent_4 { text-indent: 20px; } #dtifgqbmsk .gt_indent_5 { text-indent: 25px; } </style>
name size
Asia 16988
Africa 11506
North America 9390
South America 6795
Antarctica 5500
Europe 3745
Australia 2968
Greenland 840
New Guinea 306
Borneo 280

Created on 2024-01-15 with reprex v2.0.2

Session info
sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.3.2 (2023-10-31)
#>  os       macOS Sonoma 14.2.1
#>  system   x86_64, darwin20
#>  ui       X11
#>  language (EN)
#>  collate  en_US.UTF-8
#>  ctype    en_US.UTF-8
#>  tz       Europe/Vienna
#>  date     2024-01-15
#>  pandoc   3.1.9 @ /usr/local/bin/ (via rmarkdown)
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package     * version date (UTC) lib source
#>  cli           3.6.2   2023-12-11 [1] CRAN (R 4.3.0)
#>  digest        0.6.33  2023-07-07 [1] CRAN (R 4.3.0)
#>  dplyr         1.1.4   2023-11-17 [1] CRAN (R 4.3.0)
#>  evaluate      0.23    2023-11-01 [1] CRAN (R 4.3.0)
#>  fansi         1.0.6   2023-12-08 [1] CRAN (R 4.3.0)
#>  fastmap       1.1.1   2023-02-24 [1] CRAN (R 4.3.0)
#>  fs            1.6.3   2023-07-20 [1] CRAN (R 4.3.0)
#>  generics      0.1.3   2022-07-05 [1] CRAN (R 4.3.0)
#>  glue          1.7.0   2024-01-09 [1] CRAN (R 4.3.0)
#>  gt            0.10.0  2023-10-07 [1] CRAN (R 4.3.0)
#>  htmltools     0.5.7   2023-11-03 [1] CRAN (R 4.3.0)
#>  knitr         1.45    2023-10-30 [1] CRAN (R 4.3.0)
#>  lifecycle     1.0.4   2023-11-07 [1] CRAN (R 4.3.0)
#>  magrittr      2.0.3   2022-03-30 [1] CRAN (R 4.3.0)
#>  pillar        1.9.0   2023-03-22 [1] CRAN (R 4.3.0)
#>  pkgconfig     2.0.3   2019-09-22 [1] CRAN (R 4.3.0)
#>  purrr         1.0.2   2023-08-10 [1] CRAN (R 4.3.0)
#>  R.cache       0.16.0  2022-07-21 [1] CRAN (R 4.3.0)
#>  R.methodsS3   1.8.2   2022-06-13 [1] CRAN (R 4.3.0)
#>  R.oo          1.25.0  2022-06-12 [1] CRAN (R 4.3.0)
#>  R.utils       2.12.3  2023-11-18 [1] CRAN (R 4.3.0)
#>  R6            2.5.1   2021-08-19 [1] CRAN (R 4.3.0)
#>  reprex        2.0.2   2022-08-17 [1] CRAN (R 4.3.0)
#>  rlang         1.1.3   2024-01-10 [1] CRAN (R 4.3.0)
#>  rmarkdown     2.25    2023-09-18 [1] CRAN (R 4.3.0)
#>  rstudioapi    0.15.0  2023-07-07 [1] CRAN (R 4.3.0)
#>  sass          0.4.8   2023-12-06 [1] CRAN (R 4.3.0)
#>  sessioninfo   1.2.2   2021-12-06 [1] CRAN (R 4.3.0)
#>  styler        1.10.2  2023-08-29 [1] CRAN (R 4.3.0)
#>  tibble        3.2.1   2023-03-20 [1] CRAN (R 4.3.0)
#>  tidyselect    1.2.0   2022-10-10 [1] CRAN (R 4.3.0)
#>  utf8          1.2.4   2023-10-22 [1] CRAN (R 4.3.0)
#>  vctrs         0.6.5   2023-12-01 [1] CRAN (R 4.3.2)
#>  withr         2.5.2   2023-10-30 [1] CRAN (R 4.3.0)
#>  xfun          0.41    2023-11-01 [1] CRAN (R 4.3.0)
#>  xml2          1.3.6   2023-12-04 [1] CRAN (R 4.3.0)
#>  yaml          2.3.8   2023-12-11 [1] CRAN (R 4.3.0)
#> 
#>  [1] /Library/Frameworks/R.framework/Versions/4.3-x86_64/library
#>  [2] /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library
#> 
#> ──────────────────────────────────────────────────────────────────────────────

Expected result

Session info

See above the end of the copied reprex.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions