簡體   English   中英

在循環中的R Markdown中交錯表格和圖表

[英]Interleaving tables and plots in R Markdown, within loop

我有一個R Markdown / knittr文檔,可以生成成對的圖表和表格。 對的數量是可變的,所以我在循環內創建它們。 我希望結果在輸出中交錯:表1,圖1,表2,圖2 ...

在下面的示例中,所有表首先位於文檔的頂部。 我嘗試了各種各樣的排列

  • 作為我的桌子功能的pander或kable
  • 將表格功能打包或打印出來
  • 有無結果='asis'

編輯:我找到了一個解決方案並將其發布在下面。 現在我正在尋找一個與我在循環自定義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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM