Я пытаюсь создать приложение Shiny, которое позволяет пользователям сохранять входные данные, а затем загружать их.
Самый простой способ добиться этого - создать кнопку Сохранить, которая сохраняет входные данные.Вот базовое приложение для демонстрации:
server.R
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
sliderInput("integer", "Integer:",
min = 0, max = 1000,
value = 500)
),
mainPanel(tableOutput("values"),
actionButton('save_inputs', 'Save inputs')
)
))
server <- function(input, output, session) {
sliderValues <- reactive({
value = input$integer
})
output$values <- renderTable({
sliderValues()
})
observeEvent(input$save_inputs,{
saveRDS( input$integer , file = 'integer.RDS')
})
}
shinyApp(ui = ui, server = server)
Однако я хотел бы сделать автоматическое сохранение, например, я хочу, чтобы входы были сохранены в конце сеанса.onSessionEnded () должен быть ответом на это, но он не может достичь входных значений и сохранить их.
session$onSessionEnded( function() {
saveRDS( input$integer, file = 'integer.RDS')
})
, который возвращает ошибку: Предупреждение:
Ошибка в .getReactiveEnvironment () $ currentContext: операция не разрешена без активного реактивного контекста.(Вы пытались сделать что-то, что может быть сделано только внутри реактивного выражения или наблюдателя.)
Есть ли способ решить это?