Сохранение блестящего приложения Navbar в Rmarkdown

Я пытаюсь сохранить приложение Shiny внутри файла Rmarkdown в виде отдельной HTML-страницы.

Я могу сделать это с помощью простого DT::datatable():

---
title: "Test4"
runtime: shiny
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r t4, echo=FALSE, message=FALSE, echo=FALSE}
DT::datatable(iris)

с последующим

rmarkdown::render(input = "Test4.Rmd", output_file = "Test4.html", runtime = "shiny")

дает мне HTML-файл с набором данных радужной оболочки, и я могу разместить его на файловом сервере по мере необходимости. $Employer ему это нравится и большое спасибо Джо Ченгу и его коллегам за то, что они указали мне на это решение.

(Также Джо Ченг отправил это в группу Google Shiny: если у вас есть только DT::datatable() объект (назовите его "х"), то вы можете позвонить htmlwidgets::saveWidget(x, "filepath.html") сохранить его как HTML-страницу)

Тем не мение, $employer теперь попросил, чтобы я сложил два из них в формате с вкладками.

Когда я использую этот код, страница Rmd отображается правильно, если я использую "Run Document" из RStudio:

---
title: "Test3"
runtime: shiny
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## Embedded Application

Test To Try and Render This Out As Standalone Tabbed Shiny App With Two DT::Dataframes.

```{r tabsets, echo=FALSE, warning=FALSE, message=FALSE}
shinyApp(
  ui <- (
  navbarPage(
  title = 'Testing Saving Shiny',
  tabPanel('MTCars', DT::dataTableOutput('mtcarz')) ,
  tabPanel('Irises', DT::dataTableOutput('iriz'))
  )
  )
  , 
  server <- (function(input, output) {
  output$mtcarz <- DT::renderDataTable({
  DT::datatable(
  mtcars,
  escape = FALSE,
  rownames = FALSE,
  options = list(
  pageLength = 25,
  autoWidth = TRUE
  )
  )
  })

  output$iriz <- DT::renderDataTable({
  DT::datatable(
  iris,
  escape = FALSE,
  rownames = FALSE,
  options = list(
  pageLength = 25,
  autoWidth = TRUE
  )
  )
  })
  })

)
```

но когда я использую rmarkdown:: render для него, страница HTML дает мне ожидаемую структуру (заголовок и т. д.), но без каких-либо вкладок / фреймов данных в ней.

Я использую v.1 из DT, v.0.9.2 из rmarkdown и v.0.12.2 из глянцевый вместе с R 3.2.1.

1 ответ

Решение

Я мог что-то упустить, но я не знал, что Shiny приложения будут работать без Shiny сервер. Будет ли это динамичным? Если нет, вы можете просто сделать что-то вроде этого.

```{r echo = FALSE, warning = FALSE}
library(shiny)
navbarPage(
  title = 'Testing Saving Shiny',
  tabPanel('MTCars', DT::datatable(
    mtcars,
    escape = FALSE,
    rownames = FALSE,
    options = list(
      pageLength = 25,
      autoWidth = TRUE
    )
  )),
  tabPanel('Irises', DT::datatable(
    iris,
    escape = FALSE,
    rownames = FALSE,
    options = list(
      pageLength = 25,
      autoWidth = TRUE
    )
  ))
)
```
Другие вопросы по тегам