[英]Interleaving tables and plots in R Markdown, within loop
我有一個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) )
})
```
使用asis,將表格和繪圖包裝在print()中並捕捉換行符解決了交錯問題。 我還沒想到如何將它與循環內自定義R Markdown繪圖大小的可變高度圖結合起來
請參閱https://github.com/yihui/knitr/issues/886
```{r cars, echo=FALSE, results='asis'}
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
for(one.possibility in carb.possibilities){
current.possibility <- filtereds[[one.possibility]]
my.ggplot <- 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) )
print(kable(current.possibility))
cat('\n')
print(my.ggplot)
}
```
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.