Приложение ниже содержит actionButton
, который вызывает lapply
при нажатии. lapply
циклически перебирает числа 2-4 и останавливается, если x %% 2 не равно 0. Можно ли сломать lapply
без остановки основного приложения?
library(shiny)
ui <- fluidPage(
actionButton(inputId = "go", label = "Start"),
div(id = 'placeholder')
)
server <- function(input, output, session) {
observeEvent(input$go, {
lapply(2:4, function(x) {
res = x %% 2
if(res == 0){
return(x)
} else {
insertUI('#placeholder', ui = tags$p('There was an error.'))
stop('Error')
}
})
})
}
shinyApp(ui = ui, server = server)
req
is не вариант, так как мне нужно вставить некоторый пользовательский интерфейс непосредственно перед завершением l oop, если условие x %% 2 == 0
не выполнено.
Я нашел подобный вопрос здесь: Возможно ли прекратить выполнение кода R внутри блеска (без остановки процесса блеска)? . Но он полагается на пользовательский ввод, чтобы остановить выполнение, и я не уверен, как изменить его в этом примере. Я также не могу попытаться изменить его, потому что parallel
недоступно для R версии 3.6.0. Я также видел этот пост, на который ссылаются здесь: https://github.com/rstudio/shiny/issues/1398, но я думаю, что он также требует ввода данных пользователем.