如何将单元格包装在 knitr::kable
中使用 \n
的表格单元格?
我想生成一个 .rmd 文件,其中包含一些表格,其中一列需要文本换行。应该发生包裹的地方用\n
标记。 .我试过(这是一个独立的 .rmd 文件):
---
output: pdf_document
---
## A Table with text wrap
```{r cars}
knitr::kable(data.frame(col1 = c("a", "b"), col2 = c("one\ntwo", "three\nfour")))
```
..但这不起作用。而不是留在
col2
,被包裹的部分位于 col1
的下一行.预期输出为:
col1 | col2
-------------
a | one
| two
b | three
| four
使用除
knitr
以外的其他软件包的解决方案只要他们允许打印(几乎)一样好,就欢迎使用。
最佳答案
一劳永逸的解决方案 用于标准表格的灵活双 HTML/PDF。它结合了@snoram 概述的 kableExtra 的换行功能。
假设:您使用 <br>
作为您的换行指标。
```{r}
knit_table(df1)
```
代码
library(dplyr)
library(knitr)
library(kableExtra)
knit_table <- function(df){
if (is_html_output()) {
df %>%
kable("html", escape = F) %>%
kable_styling()
} else {
df <- data.frame(lapply(df, function(x) {gsub("<br>", "\n", x)}), stringsAsFactors = F)
df %>%
mutate_all(linebreak) %>%
kable("latex", booktabs = T, escape = F)
}
}
数据
df1 <- data.frame(col1 = c("a", "b"),
col2 = c("one<br>two", "three<br>four"))
关于r - 使用 "\n"在 knitr::kable 表格单元格中包装文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52944533/