带Rmarkdown的gt表中的数学单位

带Rmarkdown的gt表中的数学单位,r,r-markdown,kable,gt,R,R Markdown,Kable,Gt,我有一个dataframe: df = data.frame(a = c("$B_{a}$", "$m^{a}$")) 当我使用r标记中的kable创建表格时,如下所示: df %>% knitr::kable() 然后将它编织成一个pdf文档,我得到如下信息: 这正是我所期望的 现在,我想用包gt复制相同的表。当我这样做时: library(gt) df %>% gt() 我明白了: 我还需要做什么才能使gt表“理解”这些是数学符号

我有一个
dataframe

df = data.frame(a = c("$B_{a}$", "$m^{a}$"))
当我使用
r标记中的
kable
创建表格时,如下所示:

df %>% knitr::kable()
然后将它编织成一个pdf文档,我得到如下信息:

这正是我所期望的

现在,我想用包
gt
复制相同的表。当我这样做时:

library(gt)
df %>% gt()
我明白了:

我还需要做什么才能使
gt
表“理解”这些是数学符号?

gt
一起工作。一个选项是使用
str\u remove/str\u replace
from
stringr
用html语法替换原始数据集列中的字符

library(gt)
library(stringr)
library(dplyr)
df %>%
    mutate(a = str_remove_all(a, "[{}$]") %>% 
         str_replace_all( c('(.)_(.)', "(.)\\^(.)"),
           c("\\1<sub>\\2</sub>", "\\1<sup>\\2</sup>"))) %>%
     gt() %>%
     fmt_markdown(columns = everything())
库(gt)
图书馆(stringr)
图书馆(dplyr)
df%>%
突变(a=str_remove_all(a,“[{}$]””)%>%
str\u replace\u all(c(“(”)),“(”)\ ^(”)”,
c(“\\1\\2”,“\\1\\2”))%>%
gt()%>%
fmt_标记(列=所有内容())
-输出

gt
一起工作。一个选项是使用
str\u remove/str\u replace
from
stringr
用html语法替换原始数据集列中的字符

library(gt)
library(stringr)
library(dplyr)
df %>%
    mutate(a = str_remove_all(a, "[{}$]") %>% 
         str_replace_all( c('(.)_(.)', "(.)\\^(.)"),
           c("\\1<sub>\\2</sub>", "\\1<sup>\\2</sup>"))) %>%
     gt() %>%
     fmt_markdown(columns = everything())
库(gt)
图书馆(stringr)
图书馆(dplyr)
df%>%
突变(a=str_remove_all(a,“[{}$]””)%>%
str\u replace\u all(c(“(”)),“(”)\ ^(”)”,
c(“\\1\\2”,“\\1\\2”))%>%
gt()%>%
fmt_标记(列=所有内容())
-输出


对于
gt
您可能需要
sup
,例如
df1 df1%%>%gt()%%>%fmt\u标记(columns=everything())
@akrun,因为我不知道
html
我不喜欢这样做。你认为这是唯一的方法吗?我认为
fmt\u标记
遵循标记语法。您想将原始数据语法转换为我展示的语法吗您可能需要
sup
for
gt
例如
df1%>%gt()%%>%fmt\u标记(columns=everything())
@akrun因为我不知道
html
我不喜欢这样做。你认为这是唯一的方法吗?我认为
fmt\u标记
遵循标记语法。您想将原始数据语法转换为我展示的语法吗?对于我展示的过于简化的示例,这确实有效,但事实上,我有许多列具有许多值(3-4页A4),具有不同类型的非常复杂的物理单位,不一定像我展示的示例。@bird好的,如果您有多个列,使用
mutate(跨(yourcolumns,.
并对所选列进行转换。我展示了一种方法,可以将原始示例转换为
gt
可以使用的格式work@bird否则,如果您有很多更改,那么可能必须用html标记重写它。我同意您建议的方法适用于我发布的这个特定问题d、 但是我觉得使用这种方法,我必须学习
html
,并做很多不同的
html
标记来分别更改每个单元(因为它们不遵循相同的模式)@bird您对此的预期解决方案是什么。问题的目的是自动转换kable代码还是在GT中解析当前版本。这对于我展示的过于简化的示例确实有效,但实际上,我有许多列,其中包含许多值(3-4页A4)使用不同类型的非常复杂的物理单元,这些物理单元不一定像我展示的这个示例。@bird好的,如果有多个列,请使用
mutate(跨(yourcolumns,.
并对所选列进行转换。我展示了一种方法,可以将原始示例转换为
gt
可以使用的格式work@bird否则,如果您有很多更改,那么可能必须用html标记重写它。我同意您建议的方法适用于我发布的这个特定问题d、 但是我觉得使用这种方法,我必须学习
html
,并做很多不同的
html
标记来分别更改每个单元(因为它们不遵循相同的模式)@bird您对此的预期解决方案是什么。问题的目的是自动转换kable代码还是在gt的当前版本中进行解析