在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,定义为默认值。如果再次按下加载,标签将会更改,因为会话中提供了“新”数字输入。我正在努力解决这个问题,只需按一下操作按钮即可更新所有输入。