2016-06-03 3 views
2

Я хочу включить в приложение Shiny интерактивный документ, созданный с помощью Rmd. Проблема в том, что Rmd включает в себя два блестящих приложения.Блестящий: как правильно включить Shiny HTML

Это .Rmd

# myInteractiveDocument.Rmd 

... 

```{r, echo=FALSE, eval=TRUE} 

    shinyAppDir('shiny_app_dir1', 
       options=list(width= "100%", height=700)) 
``` 

... 

```{r, echo=FALSE} 
shinyAppDir('shiny_app_dir2') 
``` 

и это внешняя Блестящая приложение

library(shiny) 

# Define UI for application that draws a histogram 
ui <- shinyUI(fluidPage(

... 
     mainPanel(
     plotOutput("distPlot"), 
     includeHTML("intro.html") 
    ) 
    ) 
)) 

# Define server logic required to draw a histogram 
server <- shinyServer(function(input, output) { 

... 

# Run the application 
shinyApp(ui = ui, server = server) 

Я исходил таким образом:

Я составившего документ RMD с

R -e "rmarkdown::render('myInteractiveDocument.Rmd')" 

и переместил его в та же самая папка внешнего приложения.

Когда я запускаю его из RStudio, все работает. Но потом, когда я переехал его на сервере Ubuntu я получаю ошибку

Uncaught TypeError: Cannot read property 'filter' of undefined 

поднятый на этой линии

var dynamicResults = results.filter(".html-widget-output"); 

из data:application/x-javascript

ответ

0

Может быть, вы должны попытаться загрузить приложения в качестве объектов. Например

# myInteractiveDocument.Rmd 

... 

```{r, echo=FALSE, eval=TRUE} 

ui1 = source("path/to/app1/ui.R", local = TRUE)$value 
server1 = source("path/to/app1/server.R", local = TRUE)$value 
server(input, output, session) 
ui1 
``` 

... 

```{r, echo=FALSE} 
ui2 = source("path/to/app2/ui.R", local = TRUE)$value 
server2 = source("path/to/app2/server.R", local = TRUE)$value 
server2(input, output, session) 
ui2 
``` 

Обратите внимание, что source(..., local = TRUE) в основном так же, как копировать/вставить, так что входные/выходные идентификаторы двух приложений и rmd не должны сталкиваться с тем, чтобы это работало.