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

问题描述 投票:1回答:1

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

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

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

在此先感谢您的帮助。

我已尝试使用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个回答
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")))
    ))
)
© www.soinside.com 2019 - 2024. All rights reserved.