繁体   English   中英

列表中每个元素的编织/有线标题

[英]Knitr / kable captions for each elements of a list

我目前必须使用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 and df2 respectively时,我想有df1第一和df2第二等等...

我不习惯list()kable()因为我一直都用data.frame / data.table。 我试图用names()cat() ,...用参数替换caption ,但没有得到我想要的结果。 我很确定这有些简单。

有人可以帮助我吗? 谢谢。

您可以在for循环中单独打印表,如此处建议的那样: 从lapply或print语句的函数调用kable时,kable的异常行为

Rmarkdown

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM