【问题标题】:Knitr / kable captions for each elements of a list列表中每个元素的 Knitr / kable 标题
【发布时间】:2019-07-08 20:28:19
【问题描述】:

我目前必须使用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,依此类推...

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

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

【问题讨论】:

    标签: r r-markdown knitr kable kableextra


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-10-14
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 2018-04-20
      • 2020-06-06
      • 1970-01-01
      • 2021-07-04
      • 2021-12-20
      相关资源
      最近更新 更多