我有一个闪亮的应用(radiant.data),它使用knitr
生成可在应用内部查看的报告( R>报告)。因为输出显示在一个闪亮的应用程序中,我需要一个渲染函数,用于显示DT表格(即转换为shiny.render.function
)。一切正常。
但是,我现在要使用custom print method来处理渲染,这样我就可以DT::datatable(mtcars)
使用knitr
和knit_print.datatables
生成shiny.render.function
下面是一些示例R-markdown,其中包含我正在使用的knit_print.datatables
函数。 chunk1
和chunk2
按预期显示shiny.render.function
但chunk6
没有显示任何内容。如果screenshot.force = TRUE
我从chunk6
获得截图,但这不是我想要的。
使用knitr::knit2html
```{r chunk1}
knitr::opts_chunk$set(screenshot.force = FALSE)
DT::renderDataTable(DT::datatable(mtcars))
```
```{r chunk2}
knit_print.datatables <- function(object, ...) {
DT::renderDataTable(object)
}
```
```{r chunk3}
knit_print <- knitr::knit_print
knit_print.datatables(DT::datatable(mtcars))
```
```{r chunk4}
getS3method("knit_print", "datatables")
```
```{r chunk5}
class(DT::datatable(mtcars))
```
```{r chunk6}
DT::datatable(mtcars)
```
我意识到上面的R-markdown虽然可以重现,如果你安装了knitr
和DT
,看起来有点奇怪但是当我正确导出knit_print.datatables
函数时,我得到相同的结果在我的应用程序中(参见下面的示例输出)。