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')
}
```
另一种选择是使用 broom
package :
---
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')
}
```
我正在尝试使用 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')
}
```
另一种选择是使用 broom
package :
---
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')
}
```