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

时间:2014-12-08 19:41:37

标签: r shiny

runApp的帮助页面说:

  

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

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

我可以直接设置.globals$retval然后调用某种中断吗? shiny包中是否有一个函数可以执行此操作?

1 个答案:

答案 0 :(得分: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)
    }
    })
  }
))

停止时:

> myValue
[1] 7