如何基于另一个单选按钮输入将单选按钮插入闪亮的UI?

时间:2019-03-25 17:09:58

标签: r shiny radio-button

我正在尝试创建一个基本的闪亮用户表单,根据该表单我需要执行一些计算。为了让我这样做,需要了解每种产品的材料和形状。有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) { 



    }

基于材料的用户输入,将出现用于形状的单选按钮。如果他们选择银色,则形状应为“圆形”或“正方形”。如果选择“黄金”,则形状应为“三角形”或“矩形”

1 个答案:

答案 0 :(得分:1)

您可以使用conditionalPanel()

NB:条件在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")))
    ))
)