我在 Rshiny 中有 1 个输入需要多个输入:
selectInput("selected_herd", "选择畜群", selected = herds_list1, Choices = herds_list, multiple = TRUE)
在应用程序中,当我添加多个牛群时,应用程序会在我按 Enter 之前刷新数据。有办法阻止这一切吗?并让应用程序仅在我完成输入列表并按 Enter 键后刷新数据?在所附的照片中,您可以看到我即将开始输入牛群列表,但应用程序已经刷新空列表上的数据并显示错误。我想要的是应用程序显示先前选择的结果(照片 2),直到我完成新选择并按 Enter 键。 有人知道该怎么做吗?非常感谢!!!
Shiny 中的传统方法是添加一个按钮(或任何类似的小部件),必须单击该按钮才能应用输入。在服务器端,您可以使用
bindEvent()
将相应的反应绑定到事件(例如按下按钮)。这意味着只有在事件触发后才能计算反应式表达式。
由于您没有共享任何代码,因此我创建了一个简单的虚拟示例。请注意,
bindEvent()
可与任何类型的事件一起使用,而不仅仅是按钮。
library(shiny)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
fluidPage(
selectInput(
"select",
label = "Select Herd",
choices = c("BBBJ", "BBBX", "BBFC", "BBFD", "BBFG"),
multiple = TRUE
),
actionButton("go", "Apply changes")
)
),
mainPanel(
uiOutput("result")
)
)
)
server <- function(input, output) {
result <- reactive({
lst <- lapply(input$select, tags$li)
paste("Selected:<br>", do.call(tags$ul, lst))
})
output$result <- renderUI({
HTML(result())
}) %>%
bindEvent(input$go)
}
runApp(shinyApp(ui, server))