【问题标题】:How to reload a shiny application如何重新加载闪亮的应用程序
【发布时间】:2017-01-15 04:58:44
【问题描述】:

我开发了一个闪亮的应用程序(使用 shinydashboard),我想保存“会话”(会话是指输入的所有值和用户加载的数据)。我想将它保存在 .RData 文件中,然后能够重新启动应用程序,加载 .RData 文件并取回用户定义的数据和输入,从而得到输出......

有没有办法用 shiny 做这样的事情?

谢谢

【问题讨论】:

标签: r shiny rdata


【解决方案1】:

Shiny 刚刚发布了 0.14 版,其中包括书签,这可能是满足您需求的一种内置方法。有一个关于“高级书签”的特定教程,用于适合您情况的仪表板等用途: http://shiny.rstudio.com/articles/advanced-bookmarking.html http://shiny.rstudio.com/articles/bookmarking-state.html

0.14 升级需要当前的 R 版本(我认为是 3.3?)。

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
【解决方案2】:

我尝试使用save.image将 R 环境保存在 .RData 文件中,但没有成功。但有效的是使用 save 和 load 函数来存储和恢复为 .rda 文件。

至于命名,您可以使用时间戳来区分用户。

编辑(示例)

好的,所以在这个应用中有两个selectInput 元素:first和second。如果其中任何一个发生变化,则这些输入的值将分配给两个变量: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)

【讨论】:

  • 感谢您的回答。我尝试使用函数 save 将输入保存到 .RData 文件中,它可以工作,但我没有设法使用“加载”函数恢复输入。你具体是怎么做的?
  • 另存为 .rda。如果您有 2 个变量,则类似这样:save(file = "test.rda", list = c("first", "second")) 然后您可以随时使用 load("test.rda") 加载它们。加载后,您将能够访问它们。即使在闪亮的应用程序中。我正在添加一个示例,很快
猜你喜欢
  • 2018-03-28
  • 2017-08-10
  • 2018-06-13
  • 2018-07-28
  • 2017-07-27
  • 2019-05-28
  • 2016-11-01
  • 1970-01-01
  • 2018-11-20
相关资源
最近更新 更多