我希望能够根据单选按钮输入中的选择更新pickerInput中可用的选择。在下面的示例中,我希望单选按钮"A“给出mtcar$cyl的pickerInput列表,而选择器输入"B”给出mtcar$mpg的选择器输入。
我试着用if语句来做这件事,但是到目前为止我还没有得到任何结果。可复制的例子如下:
library(shiny)
library(leaflet)
library(shinyjs)
library(rgeos)
library(tidyverse)
library(openxlsx)
library(plotly)
library(shinyWidgets)
library(rgdal)
ui <- fluidPage(shinyjs::useShinyjs(),
fluidRow(column(
6,radioButtons("type", "Type:",
c("A" = "norm",
"B" = "unif")))),
fluidRow(column(
3,
pickerInput("regInput","Region",choices=unique(mtcars$cyl),
options = list(`actions-box` = TRUE),multiple = T,
selected = unique(mtcars$cyl)))))
server <- function (input, output, session) {
observeEvent(input$type,{
a_option <- input$regInput
if (a_option == "B") {
updatePickerInput(session = session,inputId = "regInput",
choices =unique(mtcars$mpg))}})
}
shinyApp(ui = ui, server = server)发布于 2022-02-26 12:13:01
正如在另一个答案中所说的,您需要观察input$type并根据其中的值更新选择器输入。另外,当用户多次在单选按钮选择之间选择时,包含一个the语句是很重要的,这样才能更新选择器输入。最后,在updatePickerInput上,您需要包含所选的参数来维护ui上的行为。
下面是我前面描述的代码:
library(shiny)
library(shinyjs)
library(tidyverse)
library(shinyWidgets)
ui <- fluidPage(shinyjs::useShinyjs(),
fluidRow(
column(
6,
radioButtons("type",
"Type:",
c("A" = "norm",
"B" = "unif"))
)),
fluidRow(
column(
3,
pickerInput("regInput","Region",
choices=unique(mtcars$cyl),
options = list(`actions-box` = TRUE),
multiple = T,
selected = unique(mtcars$cyl))
))
)
server <- function (input, output, session) {
observeEvent(input$type,{
if (input$type == "unif") {
updatePickerInput(session = session,inputId = "regInput",
choices = unique(mtcars$mpg),
selected = unique(mtcars$mpg))
} else {
updatePickerInput(session = session,inputId = "regInput",
choices = unique(mtcars$cyl),
selected = unique(mtcars$cyl))
}
})
}
shinyApp(ui = ui, server = server)发布于 2022-02-26 11:59:54
服务器必须侦听正确的UI元素(有关单选按钮的ID= "type“)。目前,它观察一个未定义的元素"dist“。
试着改变
observeEvent(input$dist, { code })至
observeEvent(input$type, { code })https://stackoverflow.com/questions/71275790
复制相似问题