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

时间:2017-04-10 12:14:30

标签: r r-markdown names subscript rowname

给定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

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

我试过了:

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

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

2 个答案:

答案 0 :(得分: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)
```

答案 1 :(得分:1)

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

要完成答案,您可以选择使用row.names内的参数col.nameskable,以这种方式:

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)