如何退出Shiny应用程序并返回值

mri*_*rip 15 r shiny

帮助页面runApp说:

运行一个闪亮的应用程序.此功能通常不会返回; 中断R以停止应用程序(通常按Ctrl + C或Esc).

"通常"是否意味着"永远"?有没有办法添加一个"退出"按钮并将值返回到调用的R会话runApp?即使它是一个黑客,这将是方便的功能.我试过一些搜索,但没有找到任何东西.我也查看了源代码runApp,最后一行是return(.globals$retval),所以看起来应该有办法.

我可以.globals$retval直接设置然后调用某种中断吗?shiny包中有功能吗?

jdh*_*son 15

有一个stopApp函数可以停止正在运行的应用程序并返回一个可选值:

myValue <- runApp(list(
  ui = bootstrapPage(
    numericInput('n', 'Number of obs', 100),
    actionButton("myBtn", "Press ME!"),
    plotOutput('plot')
  ),
  server = function(input, output, session) {
    output$plot <- renderPlot({ hist(runif(input$n)) });
    observe({
      if(input$myBtn > 0){
        stopApp(7)
    }
    })
  }
))
Run Code Online (Sandbox Code Playgroud)

停止时:

> myValue
[1] 7
Run Code Online (Sandbox Code Playgroud)