knitr:在循环中生成带有选项卡的汇总表?

knitr: generating summary tables with tabs in the loop?

我正在尝试使用 example 执行以下操作,但我想自动生成带有 lm() 摘要 table 的选项卡 我首先创建了包含所有摘要 tables 的列表:list_lm

---
title: 
author: 
date: 
output:
    html_document
---

# {.tabset}
```{r}
list_lm=list()
for(i in 1:10){
  list_lm[[i]]=  lm(dist ~ speed, data=cars)
}
```


```{r,results='asis', echo=FALSE}
for(i in 1:10){
  cat('##',i,' \n')
  print(list_lm[[i]] )
}
```

但是当我执行 print(list_lm[[i]] )

时它似乎没有产生很好的输出

您可以使用 knitr::kable 来更好地格式化输出:

---
output:
  html_document
---
  
# {.tabset}
```{r}
list_lm=list()
for(i in 1:10){
  list_lm[[i]]=  lm(dist ~ speed, data=cars)
}
```


```{r,results='asis', echo=FALSE}
for(i in 1:10){
  cat('##',i,' \n')
  cat("Coefficients: \n")
  print(knitr::kable(list_lm[[i]]$coefficients)) 
  cat("\n")
  cat("Summary: \n")
  s <- summary(list_lm[[i]])
  print(knitr::kable(data.frame(sigma = s$sigma,r.squared=s$r.squared)) )
  cat('\n')
}
```

另一种选择是使用 broompackage :

---
output:
  html_document
---

`r knitr::opts_chunk$set(echo = FALSE, warning = FALSE, message = FALSE, cache = F)`
  
# {.tabset}
```{r, ECHO = F, MESSAGE = F}
library(dplyr)
library(broom)
list_lm=list()
for(i in 1:10){
  list_lm[[i]]=  lm(dist ~ speed, data=cars)
}
```


```{r,results='asis', echo=FALSE}

for(i in 1:10){
  cat('##',i,' \n')
  list_lm[[i]] %>% tidy() %>% knitr::kable() %>% print
  cat('\n')
}
```