使用knitr和kableExtra在R-Markdown中将Latex公式或符号放入表格单元格

13

感谢jaySf,我能够使用R Markdown、Latex、knitrkableExtra(以下是他的示例)创建包含漂亮表格和脚注的pdf文件,并显示公式和符号。

---
title: "Untitled"
output: pdf_document
---

```{r tab}
library(knitr)
library(kableExtra)
df <- data.frame(v1=rnorm(6), v2=runif(6), v3=rbinom(6, 1, .33), 
             row.names=LETTERS[1:6])
kable(df, "latex", align="c", booktabs=TRUE) %>%
footnote(general=c("$a^2+b^2=c^2,$",     
                   "$\\\\sigma^2=\\\\frac{1}{n-1}\\\\sum_{i=1}^n(x_i-\\\\bar{x})^2;$", 
                   "1,000 \\\\$;", "100\\\\%."),
         number=c("Hello\ there! \\\\textit{Hello\ there!}"),
         footnote_as_chunk=TRUE, 
         escape=FALSE)
```

这导致:

在此输入图片描述

现在我正在努力将符号或公式放在表格中的一个单元格中。有人能否给出一个示例,其中显示普通文本符号公式在同一单元格内?最好还包括表格标题、一个列名和一行名称中的相同内容,并带有一些编号的脚注,指向单元格、标题、列名或行名中的信息,我渴望一个具有完整功能的示例!非常感谢。

1个回答

25

请注意传递给kable的参数escape

---
title: "Untitled"
output: pdf_document
---

```{r tab}
library(knitr)
library(kableExtra)
df <- data.frame(v1=rnorm(6), v2=runif(6), v3=rbinom(6, 1, .33), 
             row.names=LETTERS[1:6])

df$v4 <- c('My formula $\\sum_{i=1}^9$')
kable(df, "latex", align="c", booktabs=TRUE, escape = F, caption = '$\\Gamma$') %>%
footnote(general=c("$a^2+b^2=c^2,$",     
                   "$\\\\sigma^2=\\\\frac{1}{n-1}\\\\sum_{i=1}^n(x_i-\\\\bar{x})^2;$", 
                   "1,000 \\\\$;", "100\\\\%."),
         number=c("Hello\ there! \\\\textit{Hello\ there!}"),
         footnote_as_chunk=TRUE, 
         escape=FALSE)
```

输入图片说明

另一个例子,具有斜体列名称和额外的标题:

```{r, echo = F}
library(knitr)
library(kableExtra)
df <- data.frame(v1=rnorm(6), v2=runif(6), v3=rbinom(6, 1, .33), 
             row.names=LETTERS[1:6])
df$v4 <- c('My formula $\\sum_{i=1}^9$')

# italic column headers
colnames(df) <- paste0("\\textit{", colnames(df),"}")

kable(df, "latex", align="c", booktabs=TRUE, escape = F, caption = '$\\Gamma$') %>%
footnote(general=c("$a^2+b^2=c^2,$",     
                   "$\\\\sigma^2=\\\\frac{1}{n-1}\\\\sum_{i=1}^n(x_i-\\\\bar{x})^2;$", 
                   "1,000 \\\\$;", "100\\\\%."),
         number=c("Hello\ there! \\\\textit{Hello\ there!}"),
         footnote_as_chunk=TRUE, 
         escape=FALSE) %>%
  add_header_above(header = c("\\\\textbf{Results} $\\\\Delta$" = 5), escape = F)
```

5
很棒,这绝对能帮助很多在制作表格时苦恼的人! - Benjamin Telkamp
1
亲爱的马丁,你能否再加上一个例子,其中列名(甚至是标题上面的标题)以斜体、符号或公式呈现?非常感谢,这将使页面更加完整! - Benjamin Telkamp
2
始终如一。只需在需要的地方添加原始文本即可。 - Martin Schmelzer
非常棒!非常感谢! - Benjamin Telkamp
谢谢Martin!!这太有帮助了!我在表格方面一直很困扰,其他地方找到的信息都无法适用于PDF! - jdcode
在HTML/RevealJS中创建一个表格,应该怎么做? - murpholinox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接