Как выйти из приложения Shiny и вернуть значение
Страница справки для runApp
говорит:
Запускает блестящее приложение. Эта функция обычно не возвращается; прерывание R, чтобы остановить приложение (обычно, нажав Ctrl + C или Esc).
"Обычно" означает "всегда"? Есть ли способ добавить кнопку "exit" и вернуть значение в сеанс R, который вызвал runApp
? Даже если это взломать, это будет удобной функциональностью. Я пробовал некоторые поиски, но ничего не нашел. Я также посмотрел на источник для runApp
, последняя строка - return(.globals$retval)
, поэтому, похоже, должен быть способ.
Можно ли установить .globals$retval
напрямую, а затем вызвать какое-то прерывание? Есть ли функция в пакете shiny
, которая делает это?
Ответы
Ответ 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