Подтвердить что ты не робот

Как выйти из приложения Shiny и вернуть значение

Страница справки для runApp говорит:

Запускает блестящее приложение. Эта функция обычно не возвращается; прерывание R, чтобы остановить приложение (обычно, нажав Ctrl + C или Esc).

"Обычно" означает "всегда"? Есть ли способ добавить кнопку "exit" и вернуть значение в сеанс R, который вызвал runApp? Даже если это взломать, это будет удобной функциональностью. Я пробовал некоторые поиски, но ничего не нашел. Я также посмотрел на источник для runApp, последняя строка - return(.globals$retval), поэтому, похоже, должен быть способ.

Можно ли установить .globals$retval напрямую, а затем вызвать какое-то прерывание? Есть ли функция в пакете shiny, которая делает это?

4b9b3361

Ответ 1

Существует функция 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