Как перезагрузить блестящее приложение

Я разработал блестящее приложение (используя shinydashboard), и я хотел бы сохранить «сеанс» (под сеансом я подразумеваю все значения ввода и данные, загружаемые пользователем). Я хочу сохранить его в файле .RData, а затем иметь возможность перезапустить приложение, загрузить файл .RData и получить обратно данные и ввод, определенные пользователем, и, следовательно, вывод ...

Есть ли способ сделать такое с помощью блеска?

Спасибо


person Ghoipy    schedule 07.09.2016    source источник
comment
Да, есть объект session, который содержит все входы и выходы. См. shiny.rstudio.com/reference/shiny/latest/session.html   -  person Xiongbing Jin    schedule 07.09.2016


Ответы (2)


Я попытался сохранить среду R в файле .RData с помощью save.image, но у меня ничего не вышло. Что сработало, так это использование функций save и load для хранения и восстановления в виде файлов .rda.

Что касается именования, вы можете использовать временную метку, возможно, чтобы различать пользователей.

Изменить (пример)

Итак, в этом приложении есть два selectInput элемента: первый и второй. Если какое-либо из этих изменений изменяется, значения этих входов затем присваиваются двум переменным: first_var и second_var, которые сохраняются в test.rda файле. Если этот файл существует, переменные загружаются в сеанс.

По сути, если вы сначала запустите приложение, всякий раз, когда вы меняете входные данные, они сохраняются в файле .rda. Если вы выйдете, а затем повторно запустите приложение, переменные загружаются, и они устанавливаются как выбранное значение входных данных.

library(shiny)
if(file.exists("test.rda")) load("test.rda")

ui <- fluidPage(
  selectInput("first",
              label = "First",
              choices = c("Value A", "Value B", "Value C"),
              selected = ifelse(exists("first_var"), first_var, "Value A")
  ),
  selectInput("second",
              label = "Second",
              choices = c("Value D", "Value E", "Value F"),
              selected = ifelse(exists("second_var"), second_var, "Value D")
  )
)

server <- function(input, output, session){
  observe({
    first_var <- input$first
    second_var <- input$second
    save(file = "test.rda", list = c("first_var", "second_var"))
  })
}

shinyApp(ui, server)
person GyD    schedule 09.09.2016
comment
Спасибо за ваш ответ. Я пробовал использовать функцию save для сохранения ввода в файл .RData, она работает, но мне не удалось восстановить ввод с помощью функции «load». Как у тебя дела? - person Ghoipy; 09.09.2016
comment
Сохраните его как .rda. Примерно так, если у вас есть 2 переменные: save(file = "test.rda", list = c("first", "second")) Тогда вы можете загрузить их в любое время, используя load("test.rda"). После загрузки вы сможете получить к ним доступ. Даже в блестящем приложении. Я добавляю пример в ближайшее время - person GyD; 09.09.2016

Shiny только что выпустила версию 0.14, которая включает закладку, которая может быть встроенным подходом для удовлетворения ваших потребностей. Существует специальный учебник по «расширенным закладкам» для таких целей, как информационные панели, которые подойдут в вашем случае: http://shiny.rstudio.com/articles/advanced-bookmarking.html http://shiny.rstudio.com/articles/bookmarking-state.html

Для обновления 0.14 требуется текущая версия R (я думаю, 3.3?).

person Soren    schedule 08.10.2016
comment
Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится. - person ekad; 08.10.2016