保存并加载闪亮应用程序的替代输入

时间:2017-01-24 16:10:49

标签: r save shiny load

Export all user inputs in a Shiny app to file and load them later中,问题得到解答,如何保存,加载和导出闪亮应用的输入。我尝试调整Ron Talbot提供的简单解决方案,将所有输入保存在.RDS文件中,然后通过操作按钮将其发送到会话中。 session$sendInputMessage()与for循环一起运行。

library(shiny)  
shinyApp(
ui <- shinyUI(fluidPage(
  radioButtons("inRadio", "Radio buttons:",
               c("label 1", "label 2")),
  uiOutput("alternative_Inputs"),
  actionButton("load_inputs", "Load inputs"), 
  actionButton('save_inputs', 'Save inputs')

  )), 

server <-  shinyServer(function(input, output,session) { 

  observeEvent(input$load_inputs,{   
    if(!file.exists('inputs.RDS')) {return(NULL)}
    savedInputs <- readRDS('inputs.RDS')
    inputIDs      <- names(savedInputs) 
    inputvalues   <- unlist(savedInputs) 
    for (i in 1:length(savedInputs)) { 
    session$sendInputMessage(inputIDs[i],  list(value=inputvalues[[i]]) )
  }
  })

 observeEvent(input$save_inputs,{ 
    saveRDS( reactiveValuesToList(input) , file = 'inputs.RDS')
 })  

 output$alternative_Inputs <- renderUI({
    if (input$inRadio == "label 1"){
      numericInput("Test1", "Test1", value = 1)}
    else{
      numericInput("Test2", "Test2", value = 2)}
 })   
 })
 )

在此代码中,根据所选的单选按钮,将出现numericInput“Test1”或“Test2”。假设您将设置单选按钮“标签2”和数字输入“测试2”保存为值= 5.如果将单选按钮更改为“标签1”并重新加载以前的设置,则只会将单选按钮更改为“标签2“,但值将为2,定义为默认值。如果再次按下加载,标签将会更改,因为会话中提供了“新”数字输入。我正在努力解决这个问题,只需按一下操作按钮即可更新所有输入。

0 个答案:

没有答案