8

给定一个 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() 创建表时,它并没有出现下标。

4

3 回答 3

9

要在 rmarkdown 文档中添加下标,您可以在两个波浪号之间嵌入文本:text~sub~. 使用 functionkable时,表中的任何文本都被识别为 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)
```
于 2017-04-10T15:25:31.183 回答
6

关于 bamphe 的回应只有一个注意事项是正确的代码拼写错误。应该是\\textsubscript{}。它缺少第二个“t”。

并完成答案,您可以选择使用参数row.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)
于 2019-01-17T22:37:52.700 回答
1

我也在寻找一种方法,该方法允许在带有 kable 的降价表中同时使用 html 和 pdf 格式的下标上标。经过一番搜索,终于找到了@yihui-xie这里解释的文字参考方法:bookdownguide

(ref:foo) H~2~Ofoo参考文献和H~2~O正文在哪里。

我的代码示例展示了如何使用文本引用。确保遵循基本规则:

  1. 引用在整个文档中必须是唯一的
  2. 引用不应在“要插入的东西”之后有空格
  3. 引用需要在自己的段落中,并且在其上方和下方都有一个空行

请注意,只有引用的 "foo" 和 "fo" 会给出下标,而 ~[]~ 方法只适用于 html 而不是 pdf。


(ref:foo) CO~2~/CO~2~

(ref:fo) CO~2~


```{r chunk-to-show-the-text-reference-method, echo = FALSE }
library(dplyr)
library(knitr)
library(kableExtra)

# Make lists
dtmin_name <- c("ref/ref","refrigerant/CO2","(ref:foo)",paste0("ground/","(ref:fo)"),"ground/water","air/refrigerant","water/refrigerant","water/CO2")
temp_diff <- c( 2.3, 1.4, 0.8, 6.8, 14, 6, 4, 3.46)

# Make dataframe and column names
dtmin_df <- data.frame(dtmin_name,temp_diff, stringsAsFactors = FALSE)
colnames <- data.frame("Interface Type ", "dT~min~ Interval [K]", stringsAsFactors = FALSE)
colnames(dtmin_df) <- colnames

# Make Table
kable(dtmin_df, caption = "Typical dT~min~ Temperature Intervals", booktabs = TRUE, format.args = list(big.mark = ",")) %>%
  kable_styling(bootstrap_options = c("striped", "hover"),latex_options = c("striped","scale_down"))```
于 2021-12-19T13:03:54.530 回答