You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言的gt表格中显示上下标?——实现同位素列数字的上标展示

在gt包表格中实现上标/下标(以同位素列为例)

没问题!要在gt生成的表格里显示上标或下标,核心是利用gt支持HTML/Markdown格式的特性,把需要特殊格式的内容用对应的标签包裹,再让gt识别解析就行。针对你要把同位素列的数字设为上标的需求,我给你调整并优化了代码:

library(gt)
library(stringr) # 用于字符串拆分和替换

# 构建数据框(这里不用cbind,避免把数值型的Abundance转成字符)
Isotope <- c("1H", "2H", "16O", "17O", "18O")
Abundance <- c(0.99985, 0.00015, 0.99757, 0.00038, 0.00205)
isotope_table <- data.frame(Isotope, Abundance)

# 处理Isotope列:把数字部分提取出来,用上标标签包裹
isotope_table$Isotope <- str_replace_all(
  isotope_table$Isotope,
  pattern = "(\\d+)([A-Z])", # 匹配数字+大写元素符号的组合
  replacement = "<sup>\\1</sup>\\2" # 把数字放到<sup>标签里,保留元素符号
)

# 生成gt表格并解析HTML格式
isotope_table %>%
  gt() %>%
  fmt_markdown(columns = Isotope) %>% # 关键:告诉gt这列要解析HTML标签
  fmt_number(columns = Abundance, decimals = 6) # 可选:格式化丰度的小数位数

关键步骤说明:

  • 字符串处理:用str_replace_all结合正则表达式,把"1H"这类字符串拆分成数字部分"1"和元素部分"H",然后把数字用<sup>(上标)标签包裹,变成<sup>1</sup>H。如果需要下标,只要把标签换成<sub>就可以。
  • 解析格式:必须调用fmt_markdown()函数,让gt把Isotope列的内容当作HTML来解析,这样上标标签才会生效,显示出预期的上标样式。
  • 数据框优化:原代码用cbind会导致Abundance变成字符型,直接用data.frame()能保留数值类型,方便后续格式化数值。

如果你的同位素格式有变化(比如带小数或者小写元素符号),只需要调整正则表达式的pattern部分就行。

内容的提问来源于stack exchange,提问作者Nicki_NZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 13:27:35