【问题标题】:How to insert radio button into shiny UI based on another radio button input?如何根据另一个单选按钮输入将单选按钮插入闪亮的 UI?
【发布时间】:2019-03-25 17:09:57
【问题描述】:

我正在尝试创建一个闪亮的基本用户表单,我需要在此基础上执行一些计算。为了让我这样做,需要了解每个产品的材料和形状。有 2 种材料,每种材料有两种形状。

我想要一组材料单选按钮。根据用户选择的材料,下一组单选按钮会显示该材料的相关形状。

用户可以选择两种材料 - 黄金或白银。 形状的单选按钮将根据用户对材料的输入出现。如果他们选择银色,形状应该是“圆形”或“方形”。如果他们选择金色,形状应该是“三角形”或“矩形”

提前感谢您的帮助。

我已尝试使用 insertUI 函数和 if 语句,但无法根据需要插入按钮。

    library(shiny)

    library(shinydashboard)

    header <- dashboardHeader(title = "My Calculator")

    sidebar <- dashboardSidebar(

      sidebarMenu(

id = "tabs",

menuItem("Main Menu", tabName = "main_menu", icon = icon("dashboard")))

body <- dashboardBody( 
  tabItems(
    tabItem(tabName = "main_menu",
            h2("Please select a material and shape"), 
            hr(), 
            radioButtons(inputId = "material",
                         label = "Material: ",
                         choices = c("Silver" = "silver", 
                                     "Gold" = "gold"))
    ))



    ui <- dashboardPage(title = 'This is my Page title', header, sidebar, body, skin='blue')


    server <- function(input, output, session) { 



    }

形状的单选按钮将根据用户输入的材料显示。如果他们选择银色,形状应该是“圆形”或“方形”。如果他们选择金色,形状应该是“三角形”或“矩形”

【问题讨论】:

    标签: r shiny radio-button


    【解决方案1】:

    你可以使用conditionalPanel()

    注意:条件是在 JavaScript 中,所以如果你写一个不同的条件要小心,因为它与 R 语法有一些不同。

    另请注意,这会创建两个单独的输入(银和金各一个),因此您需要将其合并到您的输出中。

    这将是你的新body

    body <- dashboardBody( 
      tabItems(
        tabItem(tabName = "main_menu",
                h2("Please select a material and shape"), 
                hr(), 
                radioButtons(inputId = "material",
                             label = "Material: ",
                             choices = c("Silver" = "silver", 
                                         "Gold" = "gold")),
                conditionalPanel(condition = "input.material == 'silver'", 
                                 radioButtons("silver_shape",
                                              label = "Shape:", 
                                              choices = c("Round", "Square"))),
                conditionalPanel(condition = "input.material == 'gold'", 
                                 radioButtons("gold_shape",
                                              label = "Shape:", 
                                              choices = c("Triangle", "Rectangle")))
        ))
    )
    

    【讨论】:

    • 这正是我所需要的!感谢您的帮助
    • 作为这个问题的后续,我想知道一个单选按钮是否可以有 2 个输入.. 说我要在形状之后添加另一个维度 - '颜色'.. 有没有办法让收音机形状按钮仅在满足条件时出现,即“input.material == 'silver'”和“input.shape == 'round'”
    • 是的。所以例如你会有类似 "input.material == 'silver' &amp; input.silver_shape == 'round'" 的东西(注意这是在 JS 中)。但是,对于这个特定示例,由于“圆形”只是与银相关的形状,您实际上可以根据 input.silver_shape 使其成为条件,因为这也必然会通过纯银条件。
    • 非常感谢梅根!这完美地工作。是的,我已经尝试过您建议的解决方案,即使用input.silver_shape。我无法使用它的原因是,如果用户将他们的偏好从 Silver 更改为 Gold,颜色的单选按钮仍然保留在屏幕上..
    猜你喜欢
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    相关资源
    最近更新 更多