R Shiny将分隔符添加到单选按钮列表选项中

时间:2015-06-19 12:25:40

标签: r radio-button shiny

我有这种单选按钮:

tag$hr

但是我想添加一个像radioButtons("test", "test:", c("def" = "def"), tag$hr , radioButtons("test", "test:", c("ghi" = "ghi", "jkl" = "jkl") 这样的分隔符来将def与其他分隔符分开。 我试着像这样制作两个列表:

{{1}}

但它不起作用。

谢谢!

3 个答案:

答案 0 :(得分:3)

根据我对Shiny app开发的经验,我找到了" Inspect Source"现代浏览器的功能非常强大。它允许您查看网站背后的HTML / CSS / JS,然后您可以使用它来模拟您的工作。 Shiny允许您将HTML / CSS直接插入应用程序。通过运行您提供的radioButtons命令,然后使用Chrome的开发人员功能,我能够看到构建无线电按钮的确切HTML。然后,您可以在选项之间直接插入hr。我还在头部添加了一个名为radio的新hr类,因为默认情况下hr有一些填充它并且与输入框非常相似。您也可能希望能够在应用程序的其他位置使用常规小时。

可能有一种更简单的方法可以让那些更喜欢HTML / CSS专家的人能够与之交谈。希望这会有所帮助。

library(shiny)


ui <- fluidPage(
     tags$head(
          tags$style(HTML(
               "hr.radio {
                    border: 0;
                    border-top: 1px solid #8c8b8b;
                    padding-top: 1;
               }"
          ))
     ),


   titlePanel("New Radio Button Style"),


   sidebarLayout(
      sidebarPanel(HTML("
<div id='test' class='form-group shiny-input-radiogroup shiny-input-container shiny-bound-input'>
     <label class='control-label' for='test'>test</label>
<div class='shiny-options-group'>
     <div class='radio'>
          <label>
               <input type='radio' name='test' value='one' checked='checked'>
               <span>one</span>
          </label>
     </div>
     <hr class ='radio'>
     <div class='radio'>
          <label>
               <input type='radio' name='test' value='two'>
               <span>two</span>
          </label>
     </div>
     <hr class = 'radio'>
     <div class='radio'>
          <label>
               <input type='radio' name='test' value='three'>
               <span>three</span>
          </label>
     </div>
</div>
</div>")

      ),

      # You can see the input$test is still reacting with the radiobuttons
      mainPanel(
         textOutput("selection")
      )
   )
)


server <- function(input, output) {

   output$selection <- renderText({
      input$test
   })
}


shinyApp(ui = ui, server = server)

答案 1 :(得分:0)

radioButtons("test1", "test:",
c("def" = "def"),selected = NULL),
tags$hr() ,
radioButtons("test2", "test:",
c("ghi" = "ghi",
"jkl" = "jkl"),selected = NULL)

嗨,你想要两个单独的单选按钮?它的标签是$ hr,而不是标记$ hr。 另外,你应该为每个收音机盒提供唯一的名称。 test1和test2。

答案 2 :(得分:0)

这是JavaScript / jQuery解决方案。它找到包含def单选按钮的div元素,然后插入<hr>

radioButtons("test", "test:",
             c("def" = "def",
               "ghi" = "ghi",
               "jkl" = "jkl")),
tags$head(tags$script(HTML("
                           $(document).ready(function(e) {
                              $('input[value=\"def\"]').parent().parent().after('<hr>');
                           })
                           ")))