首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于无线按钮的pickerInput更新

基于无线按钮的pickerInput更新
EN

Stack Overflow用户
提问于 2022-02-26 10:15:15
回答 2查看 40关注 0票数 1

我希望能够根据单选按钮输入中的选择更新pickerInput中可用的选择。在下面的示例中,我希望单选按钮"A“给出mtcar$cyl的pickerInput列表,而选择器输入"B”给出mtcar$mpg的选择器输入。

我试着用if语句来做这件事,但是到目前为止我还没有得到任何结果。可复制的例子如下:

代码语言:javascript
复制
   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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-26 12:13:01

正如在另一个答案中所说的,您需要观察input$type并根据其中的值更新选择器输入。另外,当用户多次在单选按钮选择之间选择时,包含一个the语句是很重要的,这样才能更新选择器输入。最后,在updatePickerInput上,您需要包含所选的参数来维护ui上的行为。

下面是我前面描述的代码:

代码语言:javascript
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2022-02-26 11:59:54

服务器必须侦听正确的UI元素(有关单选按钮的ID= "type“)。目前,它观察一个未定义的元素"dist“。

试着改变

代码语言:javascript
复制
observeEvent(input$dist, { code })

代码语言:javascript
复制
observeEvent(input$type, { code })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71275790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档