我正在尝试创建一个基于我需要执行一些计算的基本用户表单。为了让我这样做,需要了解每种产品的材料和形状。有两种材料,每种材料有两种形状。
我想有一套材料的单选按钮..根据用户选择的材料,下一组单选按钮会显示该材料的相关形状。
用户可以选择两种材料 - 金色或银色。形状的单选按钮将根据材料的用户输入显示。如果他们选择银,形状应该是“圆形”或“方形”。如果他们选择金色,形状应为“三角形”或“矩形”
在此先感谢您的帮助。
我已尝试使用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) {
}
形状的单选按钮将根据材料的用户输入显示。如果他们选择银,形状应该是“圆形”或“方形”。如果他们选择金色,形状应为“三角形”或“矩形”
你可以使用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")))
))
)