Mar*_*ler 6 loops r knitr r-markdown
我有一个 R Markdown/knittr 文档,可以生成成对的图和表格。对的数量是可变的,因此我在循环内创建它们。 我希望结果在输出中交错:表 1、图 1、表 2、图 2...
在下面的示例中,所有表格都首先出现在文档的顶部。我尝试过各种排列
编辑:我找到了一个解决方案并将其发布在下面。现在我正在寻找一个与我在循环内的自定义 R Markdown 绘图大小中收到的出色的可变高度建议兼容的一个?
```{r cars, echo=FALSE}
library(ggplot2)
library(knitr)
carb.possibilities <- sort(unique(as.character(mtcars$carb)))
filtereds <- lapply(carb.possibilities, function(carb.ct) {
return(mtcars[ mtcars$carb == carb.ct , ])
})
carb.possibilities <- paste(carb.possibilities, ' Carburetors', sep = '')
names(filtereds) <- carb.possibilities
lapply(carb.possibilities, function(one.possibility) {
current.possibility <- filtereds[[one.possibility]]
print(kable(current.possibility))
ggplot(current.possibility, aes(factor(gear), mpg)) +
coord_flip() +
labs(x = "Gears", title = one.possibility) +
geom_point(position=position_jitter( width = 0.1, height = 0.1) )
})
```
Run Code Online (Sandbox Code Playgroud)
使用 asis,将表格和绘图包装在 print() 中并进行换行可以解决交错问题。我还没有\xe2\x80\x99t 想出如何将其与循环内自定义 R Markdown 绘图大小的可变高度图结合起来
\n\n参见https://github.com/yihui/knitr/issues/886
\n\n```{r cars, echo=FALSE, results=\'asis\'}\nlibrary(ggplot2)\nlibrary(knitr)\n\ncarb.possibilities <- sort(unique(as.character(mtcars$carb)))\n\nfiltereds <- lapply(carb.possibilities, function(carb.ct) {\n return(mtcars[ mtcars$carb == carb.ct , ])\n})\n\ncarb.possibilities <- paste(carb.possibilities, \' Carburetors\', sep = \'\')\n\nnames(filtereds) <- carb.possibilities\n\nfor(one.possibility in carb.possibilities){\n\n current.possibility <- filtereds[[one.possibility]]\n\n my.ggplot <- ggplot(current.possibility, aes(factor(gear), mpg)) +\n coord_flip() +\n labs(x = "Gears", title = one.possibility) +\n geom_point(position=position_jitter( width = 0.1, height = 0.1) )\n\n print(kable(current.possibility))\n\n cat(\'\\n\')\n\n print(my.ggplot)\n\n}\n```\nRun Code Online (Sandbox Code Playgroud)\n