我想创建一个模块,将表格编织为pdf,用于不同级别的变量。对于指定的每个值,最终输出应该是一个不同的表。
例如,从数据集iris
,变量Species
的值为c("setosa", "versicolor", "virginica"
我可以使用下面的代码为setosa生成一个表:
library(knitr)
library(dplyr)
g <- 'setosa'
iris %>% filter(Species==g) %>%
summarise(avg=mean(Sepal.Width)) %>%
kable(caption=paste('Results for',g))
但是我想通过传递值向量来打印输出(即setosa,versicolor和virginica)来提高效率。 我知道在这种情况下我可以按Species分组,但我的原始代码有更广泛的输出,我宁愿将它打印到不同的表中。
答案 0 :(得分:0)
您可以创建一个函数并循环遍历向量:
library(purrr)
print_kable <- function(species) {
iris %>% filter(Species == species) %>%
summarise(avg=mean(Sepal.Width)) %>%
kable(caption=paste('Results for', species)) %>%
print()
}
walk(.x = c("setosa", "versicolor", "virginica"), print_kable)
修改强>
对于降价文档,代码块应如下所示:
```{r results='asis'}
library(dplyr)
library(knitr)
library(purrr)
print_kable <- function(species) {
iris %>% filter(Species == species) %>%
summarise(avg=mean(Sepal.Width)) %>%
kable(caption=paste('Results for', species)) %>% print()
}
walk(c("setosa", "versicolor", "virginica"), print_kable)
```