kableExtra格式化表格时p值列乘号x斜体问题如何解决
表格p-value列乘号x被自动斜体化问题
我正在尝试格式化一张表格,发现其中一列的显示效果不符合预期。从下方图片可以看到,标题为"p-value"的列中数值显示为1.0<em>x</em>10^-5的样式,我无法查明该列中乘号x被斜体化的原因。我想要实现的效果是该列每个数值显示为1.0 x 10^-5,即乘号x不斜体,且x前后各有一个空格。请问有没有人知道该如何修复这个问题?下方附上我用来生成表格的代码以及示例数据集。
示例代码
kbl(df.test, format = "html", table.attr = "style='width:40%;'", escape = F, align = "r") %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive")) %>% kable_classic(full_width = F, html_font = "Times New Roman")
示例数据
structure(list(SNP = c("abc", "abc", "abc"), Gene = c("xyz", "xyz", "xyz"), Cases = c(87L, 86L, 72L), `% Population` = structure(19:17, .Label = c("$12.4^{+5.3}_{-4.2}$", "$12.7^{+5.4}_{-4.3}$", "$13.3^{+5.4}_{-4.4}$", "$13.6^{+5.5}_{-4.4}$", "$13.9^{+5.5}_{-4.4}$", "$13.9^{+5.5}_{-4.5}$", "$14.2^{+5.5}_{-4.5}$", "$14.8^{+5.6}_{-4.6}$", "$15.4^{+5.7}_{-4.7}$", "$16.0^{+5.8}_{-4.8}$", "$16.3^{+5.8}_{-4.8}$", "$17.2^{+5.9}_{-4.9}$", "$19.8^{+6.2}_{-5.3}$", "$20.4^{+6.2}_{-5.3}$", "$20.7^{6.2}_{-5.4}$", "$21.0^{+6.2}_{-5.4}$", "$21.3^{+6.3}_{-5.4}$", "$25.4^{+6.6}_{-5.9}$", "$25.7^{+6.6}_{-5.9}$" ), class = "factor"), p.value = structure(c(12L, 14L, 18L), .Label = c("$1.0 x 10^{-5}$", "$1.1 x 10^{-4}$", "$1.2 x 10^{-5}$", "$1.3 x 10^{-3}$", "$1.4 x 10^{-5}$", "$1.5 x 10^{-3}$", "$1.7 x 10^{-4}$", "$2.0 x 10^{-4}$", "$2.0 x 10^{-5}$", "$2.9 x 10^{-4}$", "$4.0 x 10^{-4}$", "$5.2 x 10^{-7}$", "$5.6 x 10^{-4}$", "$6.3 x 10^{-7}$", "$6.6 x 10^{-4}$", "$6.6 x 10^{-4}$", "$7.8 x 10^{-4}$", "$8.5 x 10^{-6}$", "$9.2 x 10^{-4}$"), class = "factor")), row.names = c(NA, 3L), class = "data.frame")
问题原因
你调用kbl时设置了escape = F,且p.value列的数值都包裹在$符号中,这是LaTeX数学公式的标识,数学环境下的字母默认会被渲染为斜体,才会出现乘号x被斜体的问题。
解决方法
- 方法1:修改
p.value列的公式内容,把x替换为LaTeX的普通文本标记\text{x},前后空格也可以直接放在\text{}里,示例格式为$1.0 \text{ x } 10^{-5}$,渲染后x就是正常普通文本格式。 - 方法2:如果不需要LaTeX公式渲染,直接删除
p.value列内容前后的$符号,内容会被识别为普通文本,x自然不会被斜体。 - 方法3:不想手动修改原始数据的话,可以在生成表格前批量处理
p.value列:
df.test$p.value <- gsub(" x ", "\\\\text{ x }", df.test$p.value)
内容的提问来源于stack exchange,提问作者neuron
相关产品推荐
相关产品推荐

