如何在Shiny中使用updateSelectInput更新checkboxInput

问题描述

我正在尝试加载历史记录Shiny输入,它对除checkboxInput以外的所有输入类型都适用。当执行复选框的updateSelectInput命令时,它没有正确设置。具体来说,当我尝试使用值FALSE更新复选框时,它将值设置为TRUE

要使用该代码,请将复选框留空,然后单击 Save Inputs 按钮以创建文件“ inputs.RDS”。该文件包含输入的名称及其值。然后,单击浏览按钮并加载文件“ inputs.RDS”。然后单击 Load Inputs (加载输入)按钮,复选框将被选中,好像updateSelectInput传递的值为TRUE。这是我的代码:

library(shiny)

# Define UI
ui <- (fluidPage
        (
        fileInput("sessionFileName","Session File Name"),actionButton("loadInputs","Load Inputs"),actionButton("saveInputs","Save Inputs"),# Inputs
        sidebarPanel(
          checkboxInput(inputId = "checkbox",label="Checkbox",value=FALSE),width=3
          )
        )
      )

# Define server logic
server <- (function(input,output,session)
{
  
  getInputs <- function (sessionFileName) {
    print (paste('getInputs session file name is',sessionFileName,sep=' '))
    if (is.null(sessionFileName)) return ()
    inFile <- sessionFileName
    if (!is.null(inFile)) {
      print ('inFile')
      inputData <- readRDS(file=inFile$name)
    }
    else return ()
    print (inputData)
    for (i in 1:length(inputData)) {
      if (names(inputData[i]) == 'sessionFileName') next
      if (names(inputData[i]) == 'saveInputs') next
      if (names(inputData[i]) == 'loadInputs') next
      print (paste(names(inputData[i]),inputData[[i]],sep=' '))
      updateSelectInput(session=session,inputId=names(inputData[i]),selected=inputData[[i]])
    }
    return ()
  }
  
  observeEvent (input$saveInputs,{
    inputValues <- lapply(reactiveValuesToList(input),unclass)
    saveRDS( inputValues,file = 'inputs.RDS')
  })

  observeEvent (input$loadInputs,{
    print (paste('Session file name is',input$sessionFileName,sep=' '))
    getInputs (input$sessionFileName)
  })
})
  
# Start the shiny app
shinyApp(ui = ui,server = server)

我检查了typeof中要尝试加载的复选框的值,这是合乎逻辑的,这正是我所期望的。有解决这个问题的想法吗?

解决方法

对复选框执行updateSelectInput命令时,设置不正确

那是你的问题。 updateSelectInput个更新selectInput个。 updateCheckboxInput毫不奇怪地更新了checkbox

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...