gt包fmt_number()如何通过表达式筛选待格式化的指定行?
正确实现写法
gt包的fmt_number()的rows参数遵循整洁评估规则,官方文档里的[colname]仅为列名占位标识,不是实际代码语法,直接写对应列名的过滤条件即可,无需额外包装:
library(gt) library(tidyverse) df <- starwars gt_tb <- gt(df) %>% fmt_number( columns = mass, # 直接写过滤条件,方括号、expression、引用原数据框均不需要 rows = birth_year > 20, pattern = "({x})" ) gt_tb
多条件写法示例
如果需要多条件过滤行,直接用逻辑运算符连接即可,完全符合文档说明的使用规则:
gt_tb <- gt(df) %>% fmt_number( columns = mass, rows = birth_year > 20 & mass < 100, pattern = "({x})" )
错误写法的问题说明
你之前尝试的写法报错都是因为误解了文档的占位标识,以及额外加了不需要的包装逻辑:
- 文档里的
[colname_1]只是用来指代「你要用到的列名」,不是实际要写进代码的语法 - 不需要用
expression()包装条件,也不需要引用原数据框df[birth_year]/df$birth_year,gt会自动在传入的表格数据环境里识别列名
内容的提问来源于stack exchange,提问作者vinceroni
相关产品推荐
相关产品推荐

