有光泽的元素:inputId

时间:2018-02-07 08:46:17

标签: r shiny

我的闪亮应用程序中有多个dinamically生成的元素,其inputId中有空格。原因是这些inputId来自一个tibble的变量名。

可以从这些元素中提取值,但无法更新它们。

1 - 假设我有一个复选框:inputId ="第一个变量"。

2 - 可以通过以下方式提取其值:input [[" first variable"]]

3 - 但不可能是updateCheckBox(session,inputId ="第一个变量",value = 1)。

当我删除空格时,它就可以了。是否有一些解决方案来更新其inputId上带有空格的元素?或者还有其他解决方案吗?

library(shiny)
ui <- fluidPage(

   sidebarLayout(
      sidebarPanel(

        #This is the element that has blank space in its inputId
        checkboxInput(inputId = "first variable", label = "Habilitar"),

        #This is the button that triggers the updateCheckBoxInput
         actionButton(inputId = "acao", label = "Acionar")
      ),


      mainPanel(
         verbatimTextOutput("impressao")
      )
   )
)


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

  #get value
  output$impressao <- renderPrint({ input[["first variable"]]})

  #update
  observeEvent(input$acao, {

    updateCheckboxInput(session, "first variable", value = 1)

  }) 

}

# Run the application 
shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:0)

我建议在创建输入时执行gsub(" ","_",x)。这样,您始终可以在Shiny应用程序中保持原始名称与其名称之间的一对一映射 - 如果需要,您可以始终对结果gsub("_"," ",y)进行操作。因此,x是从tibble获得的值:

x = "first variable"

 library(shiny)
 ui <- fluidPage(
   sidebarLayout(
     sidebarPanel(
       #This is the element that has blank space in its inputId
       checkboxInput(inputId =  gsub(" ","_",x), label = "Habilitar"),
       #This is the button that triggers the updateCheckBoxInput
       actionButton(inputId = "acao", label = "Acionar")
     ),
     mainPanel(
       verbatimTextOutput("impressao")
     )
   )
 )


 server <- function(input, output, session) {
   #get value
   output$impressao <- renderPrint({ input[[gsub(" ","_",x)]]})
   #update
   observeEvent(input$acao, {
     updateCheckboxInput(session,  gsub(" ","_",x) , value = 1)
   }) 
 }

 # Run the application 
 shinyApp(ui = ui, server = server)

希望这有帮助!