首页 > 解决方案 > 为什么将 inputId 添加到我闪亮的应用程序的 pickerInput 段会破坏我的代码?

问题描述

#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 应用程序,并且它给了我这个错误:

ChoiceOpt$style 中的错误:$ 运算符对原子向量无效

然而,inputId 理论上是pickerInput 的一个参数。为什么我不能明确地命名它?

标签: rshinypickerinput

解决方案


请注意,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=两种不同的方式,它们以一种意想不到的方式改变了参数。


推荐阅读