gpt4 book ai didi

r - Shiny 元素 : Blank Spaces in inputId

转载 作者:行者123 更新时间:2023-12-04 17:45:33 26 4
gpt4 key购买 nike

我 Shiny 的应用程序中有多个动态生成的元素,它们的 inputId 中有空格。原因是这些inputId来自tibble的变量名。

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

1 - 假设我有一个复选框:inputId = "first variable"。

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

3 - 但不可能 updateCheckBox(session, inputId = "first variable", 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)

最佳答案

我建议在创建输入时只执行 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)

希望这对您有所帮助!

关于r - Shiny 元素 : Blank Spaces in inputId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48659379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com