为什么将 inputId 添加到我闪亮的应用程序的 pickerInput 段会破坏我的代码?

Why does adding inputId to my pickerInput segment of my shiny app break my code?

#UI BEGINS
ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      pickerInput("chosenplans", "Select State:",
                  #inputId = "stateList",
                  choices = as.character(unique(state_plan_data_filtered$state)),
                  options = list(
                    `actions-box` = TRUE,
                    `live-search` = TRUE),
                  multiple = FALSE,
                  selected = "Alabama"),
      ),
  mainPanel()
  ),
)

每当我取消注释我的 inputId 时,我都无法 运行 我的 Shiny 应用程序,它会给我这个错误:

choicesOpt$style 错误:$ 运算符对于原子向量无效

但是,inputId 理论上是 pickerInput 的参数。为什么我不能明确命名它?

请注意 pickerInput 期望的参数是

args(pickerInput)
function (inputId, label = NULL, choices, selected = NULL, multiple = FALSE, 
    options = list(), choicesOpt = NULL, width = NULL, inline = FALSE) 

默认情况下,您传递给函数的 "chosenplans" 的值将转到 inputId= 参数,因为这是它将匹配的第一个未命名参数。但是,当您添加 inputId = "stateList" 时,您似乎在尝试添加第二个 ID,但这现在意味着“chosenplans”的值将传递给您尚未指定的第一个参数,这意味着将如此label= 参数和 "Select State:" 被传递给 chociesOpt= 参数。这不是导致错误的 choicesOpt 的有效值。

问题是您标记了一些参数而不是其他参数,并指定了 inputId= 两种不同的方式,以一种意想不到的方式随机排列参数。