R语言 在函数中返回多个gt表

lstz6jyr  于 2023-04-18  发布在  其他
关注(0)|答案(2)|浏览(177)

有没有一种方法可以在R markdown中从用户编写的函数中返回多个gt表?通常,我会将表组合在一个列表中并输出它们。然而,当我这样做时,html文档显示一些格式代码而不是表。

```{r}
library(gt)
df <- data.frame(a=1:5, b=c("a", "c", "a", "c", "c"))

return_multiple <- function(data) {
  tab1 <- df %>% gt()
  tab2 <- df %>% gt()
  
  return(tab1) # only first table printed
  return(tab2)

### does not work ###
#  try <- list(tab1, tab2)
#  return(try) # formatting code printed
}

return_multiple(df)

这是我返回列表时的输出(return(try)):

![](https://i.stack.imgur.com/WYxke.png)
ulmd4ohb

ulmd4ohb1#

你可以使用purrr::walk来实现,例如:

---
output: html_document
---

```{r, results='asis'}
library(gt)
df <- data.frame(a=1:5, b=c("a", "c", "a", "c", "c"))

purrr::walk(list(df,df), ~.x |> 
              gt() |> 
              tab_caption("Caption here") |> 
              print())

![](https://i.stack.imgur.com/NOWEv.png)
q0qdq0h2

q0qdq0h22#

只需将results='asis'添加到原始方法中:

```{r echo=F, results='asis'}
library(gt)
df <- data.frame(a=1:5, b=c("a", "c", "a", "c", "c"))
return_multiple <- function(data) list(gt(data), gt(data))

return_multiple(df)

相关问题