在R Shiny中,我编写了以下脚本作为多个分组单选按钮的实现,其中按钮的值显示在顶部,多个问题的单选按钮与这些按钮值对齐:
library(shiny)
ui <- fluidPage(
titlePanel(title=HTML(" "), windowTitle="Questionaire"),
cellWidths = c("100%"),
cellArgs = list(style = "padding: 6px"),
wellPanel(
splitLayout(cellWidths = c("25%","10%","10%","10%","10%","10%"),"",
p("strongly agree"),p("agree"),p("neutral"),p("disagree"),p("strongly disagree")),
splitLayout(cellWidths = c("25%","10%","10%","10%","10%","10%"),p(strong("The website has a user friendly interface:")),
radioButtons("use1", "", "", selected=0, inline = T),
radioButtons("use2", "", "", selected=0, inline = T),
radioButtons("use3", "", "", selected=0, inline = T),
radioButtons("use4", "", "", selected=0, inline = T),
radioButtons("use5", "", "", selected=0, inline = T)),
splitLayout(cellWidths = c("25%","10%","10%","10%","10%","10%"),p(strong("The website is easy to navigate:")),
radioButtons("nav1", "", "", selected=0, inline = T),
radioButtons("nav2", "", "", selected=0, inline = T),
radioButtons("nav3", "", "", selected=0, inline = T),
radioButtons("nav4", "", "", selected=0, inline = T),
radioButtons("nav5", "", "", selected=0, inline = T))
)
)
server <- function(input, output, session)
{
}
shinyApp(ui = ui, server = server)
在此实现中,可以检查每个问题的多个选项。如何更改代码,以便在用户选择问题选项后,只要用户随后为同一问题选择其他选项,就会取消选择此选项?
答案 0 :(得分:2)
我希望这会帮助你一点点,它可能仍需要一些调整。我认为获得网格的最佳方法是为每个问题提供一个单选按钮选项。为了将其设置为网格,您可能必须使用标记$ style中的CSS设置。例如:
ui <- fluidPage(
tags$style(".checkbox-inline, .radio-inline {
text-align: center;
margin-left: 0px;
margin-right: 0px;
padding: 0px;
width: 20%;} "),
titlePanel(title=HTML(" "), windowTitle="Questionaire"),
cellWidths = c("100%"),
cellArgs = list(style = "padding: 6px"),
wellPanel(
# Introduced div to centre align the headers
splitLayout(cellWidths = c("25%","10%","10%","10%","10%","10%"),"",
div(style="text-align:center", HTML("strongly agree")),
div(style="text-align:center", HTML("agree")),
div(style="text-align:center", HTML("neutral")),
div(style="text-align:center", HTML("disagree")),
div(style="text-align:center", HTML("strongly disagree"))),
splitLayout(cellWidths = c("25%","50%"),
p(strong("The website has a user friendly interface:")),
radioButtons("use1", "", choiceValues=1:5, choiceNames=rep("",5), selected=0, inline = T)
),
splitLayout(cellWidths = c("25%","50%"),
p(strong("The website is easy to navigate:")),
radioButtons("nav1", "", choiceValues=1:5, choiceNames=rep("",5), selected=0, inline = T)
))
)