我正在尝试创建一个基本的闪亮用户表单,根据该表单我需要执行一些计算。为了让我这样做,需要了解每种产品的材料和形状。有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) {
}
基于材料的用户输入,将出现用于形状的单选按钮。如果他们选择银色,则形状应为“圆形”或“正方形”。如果选择“黄金”,则形状应为“三角形”或“矩形”
答案 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")))
))
)