如何从RStudio小工具中打开Shiny应用程序

Jor*_*eys 4 r rstudio shiny

我正在开发一个捆绑了一组应用程序的软件包,并且我想拥有一个RStudio插件,该插件可让您根据分类选择应用程序。这个应用程式是一个闪亮的小工具,是闪亮应用程式的特殊迷你版本。

问题是:

  • 我不能runApp在另一个应用程序内使用,这给了错误。
  • 我无法退回要启动的应用程序,因为我尝试了并且它没有执行任何操作。

在小工具服务器功能中,我具有以下代码:

observeEvent(input$done,{
      theapp <- shinyAppDir("Dir/to/app")
      stopApp(theapp)
    })
Run Code Online (Sandbox Code Playgroud)

但无济于事。我可以将应用程序作为返回值,但是由于某种原因它不会自动打开。

Jor*_*eys 5

您可以通过使用rstudioapi软件包在关闭应用程序时向R控制台发送命令来解决此问题。服务器功能中的代码将变为:

observeEvent(input$done,{
      command <- "shinyAppDir('Dir/to/app')"
      rstudioapi::sendToConsole(command)
      stopApp()
    })
Run Code Online (Sandbox Code Playgroud)

一个玩具示例来说明:

library(shiny)
ui2 <- fluidPage(
  title = "The Second App",
  plotOutput("plot")
)
server2 <- function(input, output, session){
  output$plot <- renderPlot(hist(iris$Sepal.Length))
}

library(miniUI)
library(rstudioapi)
theGadget <- function(){
  ui <- miniPage(
    gadgetTitleBar("Get some app"),
    miniContentPanel(
      renderText("Click on Done")
    )
  )
  server <- function(input, output, session){
    observeEvent(input$done,{
      command <- "shinyApp(ui2, server2)"
      rstudioapi::sendToConsole(command)
      stopApp()
    })
  }
  viewer <- dialogViewer("Example")
  runGadget(ui, server, viewer = viewer)
}

theGadget()
Run Code Online (Sandbox Code Playgroud)