R gt包text_transform()处理行组标题报resolve_location错误如何解决
- 你的示例代码首先存在笔误:
gt(groupname_col = "b")指定的分组列不存在,数据中实际分组列名为groups,需先修正。 - 触发
no applicable method for 'resolve_location'报错的核心原因:你使用的gt版本过低,旧版本中text_transform()函数未适配cells_row_groups()位置类型,缺少对应的位置解析方法。
方案1:升级gt包后复用原有逻辑
将gt升级至0.9.0及以上版本,官方已补全对行组位置的text_transform支持,修正列名笔误即可正常运行:
# 加载依赖 library(tibble) library(gt) library(purrr) library(xml2) tbl <- tibble( values = c("test<sup>2</sup>", 2:4), groups = c("x<sup>2</sup>", "x<sup>2</sup>", "y", "y") ) unescape_html <- function(str){ xml_text(read_html(paste0("<x>", str, "</x>"))) } # 可正常运行的代码 tbl |> gt(groupname_col = "groups") |> text_transform( locations = cells_row_groups(), fn = function(x){ x <- map_chr(x, unescape_html) paste0("<span style='color:red'>", x, "</span>") } )
方案2:不升级包,用gt原生HTML渲染能力(代码更简洁)
gt本身原生支持HTML标签解析,不需要手动写反转义函数,直接将行组内容标记为HTML格式,再添加样式即可,兼容性更好:
tbl |> gt(groupname_col = "groups") |> fmt( locations = cells_row_groups(), fns = function(x) { map_chr(x, ~ html(paste0("<span style='color:red'>", .x, "</span>"))) } )
运行后效果如下:
内容的提问来源于stack exchange,提问作者ZRoss
相关产品推荐
相关产品推荐

