r - 列表中每个元素的 Knitr/kable 标题

标签 r r-markdown knitr kable kableextra

我目前必须使用 R Markdown 创建一个 .pdf 文档。我正在使用 knitr 包将我的数据帧“转换”为 LaTeX。我通常这样做没有问题,但这次我不太确定如何解决我的问题。

我需要获取列表中每个元素(一些数据帧)的标题,以在 .pdf 文件中显示为标题。

这是我拥有的数据示例:

library(knitr)
library(kableExtra)

df1 <- data.frame(col1 = c(1,2,3), col2 = c("a", "b", "c"))
df2 <- data.frame(col1 = c(6,7,8), col2 = c("d", "e", "f"))
list <- list("df1" = df1, "df2" = df2)

print(list)

$`df1`
  col1 col2
1    1    a
2    2    b
3    3    c

$df2
  col1 col2
1    6    d
2    7    e
3    8    f

我的 knitrkableExtra 代码:

my_function <- function(list){
    kable(list, "latex", longtable = T,
              caption = "df1 and df2 respectively") %>%
          kable_styling(font_size = 7,
                        latex_options = c("repeat_header"),
                        full_width = F)
}

print(lapply(list, my_function))

目前,输出文档中两个表的标题分别为 df1 和 df2,而我希望第一个为 df1df2 第二个等等...

我不习惯在 kable() 中使用 list(),因为我主要使用 data.frame/data.table。我尝试使用 names()cat() 等参数替换 caption,但没有得到结果通缉。我很确定这有一些简单的事情。

谁能帮帮我?谢谢。

最佳答案

您可以在 for 循环中单独打印表格,正如这里所建议的:Unexpected behavior of kable when called from lapply or from function with print statement .

Markdown

---
title: "List of tables"
output: 
  pdf_document
header-includes:
   - \usepackage{longtable}
---

```{r tables, results = "asis", echo = FALSE}
library(knitr)
library(kableExtra)

## data
df1 <- data.frame(col1 = c(1,2,3), col2 = c("a", "b", "c"))
df2 <- data.frame(col1 = c(6,7,8), col2 = c("d", "e", "f"))
ls <- list(df1 = df1, df2 = df2)

## tables
for(i in seq_along(ls)) {
  print(
      kable(ls[[i]], format = "latex", caption = names(ls)[i], longtable = TRUE) %>%
          kable_styling(font_size = 7, latex_options = "repeat_header", full_width = FALSE)
  )
}

```

PDF输出

PDF_output

关于r - 列表中每个元素的 Knitr/kable 标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56942147/

相关文章:

css - 如何将多个样式表附加到 rmarkdown 文档?

r - 将 R 脚本编译成独立的 .exe 文件?

r - 如何从 2 个或更多矩阵的所有可能组合创建矩阵?

r - 针织/Rmd : Adding title page and text when converting to MS Word

r - 使用 Rmd pdf 的自定义模板而不更改当前设置

r - 针织/Rmd : page break after n lines/n distance

r - 调整条形图ggplot2中的轴限制

r - 使用 R 或 Matlab 的双变量分布的 3D 图

r - kable、kableExtra 中的 2 列 LaTeX 环境表*

html - 如何将 pandoc_options 作为 output_options 传递给 rmarkdown::render()