pan*_*man 5 r background-process shiny
Dean Attali 提供了一个精彩的示例,介绍如何使用关闭按钮优雅地退出 Shiny 应用程序,该按钮既关闭浏览器窗口又结束 Shiny 会话。考虑以下示例(Dean 原始代码的修改):
这ui.r:
library(shiny)
library(shinyjs)
jscode <- "shinyjs.closeWindow = function() { window.close(); }"
ui <- fluidPage(
useShinyjs(),
extendShinyjs(text = jscode, functions = c("closeWindow")),
htmlOutput(outputId = "exitHeading"),
actionButton(inputId = "closeGUI", label = "Exit")
)
Run Code Online (Sandbox Code Playgroud)
这server.r:
library(shiny)
library(shinyjs)
server <- function(input, output, session) {
output$exitHeading <- renderText("Press the button below to exit the app")
observeEvent(input$closeGUI, {
js$closeWindow()
stopApp()
})
}
Run Code Online (Sandbox Code Playgroud)
并运行应用程序:
runApp(appDir = "/tmp")
Run Code Online (Sandbox Code Playgroud)
我的问题是关于如何以编程方式启动 Shiny 应用程序作为后台作业,以便在应用程序仍在运行时,RStudio 控制台可以免费进一步使用(甚至并行启动第二个 Shiny 应用程序),然后使用结束作业上面应用程序的退出按钮。我正在寻找一种可以添加到包含闪亮应用程序的包中的解决方案,例如这个。
我已阅读本文并尝试了提供的示例应用程序,但它仍然需要用户手动干预。
有人可以帮忙吗?
因此,正如我在评论中提到的,您可以通过使用system基本上运行终端命令的 来实现此目的,并将wait和show.output.on.console标志设置为FALSE。
system('Rscript file.r', wait=F, show.output.on.console = F)
# if you want to access a file from in a package u need
# also in the source of the package you need to put the
# folder `directory` in `root.of.package/inst`
p <- system.file(file.path("directory", "myfile.r"), package = "my.package")
system(paste0('Rscript "', p, '"'), wait=F)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1060 次 |
| 最近记录: |