我正在开发一个捆绑了一组应用程序的软件包,并且我想拥有一个RStudio插件,该插件可让您根据分类选择应用程序。这个应用程式是一个闪亮的小工具,是闪亮应用程式的特殊迷你版本。
问题是:
runApp在另一个应用程序内使用,这给了错误。在小工具服务器功能中,我具有以下代码:
observeEvent(input$done,{
theapp <- shinyAppDir("Dir/to/app")
stopApp(theapp)
})
Run Code Online (Sandbox Code Playgroud)
但无济于事。我可以将应用程序作为返回值,但是由于某种原因它不会自动打开。
您可以通过使用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)