如何从kable()中下标表中的名称?

AJM*_*JMA 4 r names subscript rowname r-markdown

给定data.frame A,我如何使用下标的行和列名称?最终我想通过rmarkdown中的kable()生成一个表(输出:word文档).

A <- data.frame(round(replicate(3, runif(2)),2))
rownames(A) <- c("Hola123", "Hola234")
A

          X1   X2   X3
Hola123 0.47 0.55 0.66
Hola234 0.89 0.45 0.20
Run Code Online (Sandbox Code Playgroud)

在通过kable(A)创建表时,如何从列名和列名中下标所有数字?

我试过了:

rownames(A) <- c(expression(Hola["123"]), expression(Hola["234"]))
names(A) <- c(expression(X["1"]), expression(X["2"]), expression(X["3"]))
Run Code Online (Sandbox Code Playgroud)

但是在.rmd文件中通过kable()创建表时,它不会出现下标.

Séb*_*tte 6

要在rmarkdown文档中添加下标,您可以将文本嵌入两个代码之间:text~sub~.使用函数时kable,表中的任何文本都被识别为markdown语法.所以你的rmarkdown代码应该是:

```{r}
A <- data.frame(round(replicate(3, runif(2)),2))
rownames(A) <- c("Hola~123~", "Hola~234~")
names(A) <- c("X~1~", "X~2~", "X~3~")
knitr::kable(A)
```
Run Code Online (Sandbox Code Playgroud)

  • 就像 Rubem 在下面指出的那样,这是拼写错误的:使用 `\\textsubscript{123}`。这只是给像我一样阅读 `tex` 的未来读者的一个提示,“啊,我猜这对 LaTeX 命令很有意义”,然后停止进一步阅读。 (3认同)
  • 这花了我一些时间来弄清楚,所以以防万一有人想用``latex``表重复这个``pdf``输出:你不能在``latex``表中使用``markdown``语法!您需要做的是将``escape = F``添加到``kable()``然后使用``latex``语法,如``\\ texsubscript {}``(注意附加``/ ``),例如:``Hola \\ texsubscript {123}`` (2认同)

rdo*_*nas 6

关于 bamphe 响应的一个说明是正确的代码拼写错误。应该是\\textsubscript{}。它缺少第二个“t”。

并完成答案,您可以选择使用 argumentsrow.namescol.namesinside kable,以这种方式:

A <- data.frame(round(replicate(3, runif(2)),2))

rownames(A) <- c("Hola\\textsubscript{123}", "Hola\\textsubscript{234}")

knitr::kable(A,
             row.names = T,
             col.names = c("X\\textsubscript{1}", "X\\textsubscript{2}", "X\\textsubscript{3}"),
             escape = F)
Run Code Online (Sandbox Code Playgroud)

  • 请注意,表中包含特殊字符 (&amp; % $ # _ { } ~ ^ \`) 的数据和名称也需要使用 \\ 进行转义。如果您使用正则表达式进行转义,那么您还需要转义正则表达式中的斜杠,因此您最终会得到类似 `str_replace_all(str, "_", "\\\\_")` 的代码。 (2认同)