gpt4 book ai didi

r - 以编程方式将 R Shiny 应用程序作为后台作业启动

转载 作者:行者123 更新时间:2023-12-05 06:59:05 24 4
gpt4 key购买 nike

Dean Attali 在 how to exit elegantly 上提供了一个很好的例子从 Shiny 应用程序使用关闭按钮关闭浏览器窗口并结束 Shiny session 。考虑以下示例(修改来自 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")
)

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()
})
}

并运行应用程序:

runApp(appDir = "/tmp")

我的问题是关于如何启动 Shiny 应用程序作为后台作业以编程方式,以便 RStudio 控制台可以免费进一步使用(或者甚至并行启动第二个 Shiny 应用程序),同时应用程序仍在运行,然后使用上面应用程序的退出按钮结束作业。我正在寻找可以添加到包含 Shiny 应用程序的包中的解决方案,like this one .

我已阅读 this并尝试了提供的示例应用程序,但它仍然需要用户手动干预。

有人可以帮忙吗?

最佳答案

正如我在评论中提到的那样,您可以通过使用基本上运行终端命令的 system 以及 waitshow.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)

关于r - 以编程方式将 R Shiny 应用程序作为后台作业启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64462965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com