我的闪亮应用程序中有多个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)
答案 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)
希望这有帮助!