2015-06-19 45 views
5

我这样的单选按钮:[R闪亮添加分离器进入单选按钮列表选择

   radioButtons("test", "test:", 
          c("def" = "def", 
          "ghi" = "ghi", 
          "jkl" = "jkl") 

但我想添加一个分隔符像tag$hr从别人高清分开。 我试图做出这样的两个列表:

radioButtons("test", "test:", 
c("def" = "def"), 
tag$hr , 
radioButtons("test", "test:", 
c("ghi" = "ghi", 
"jkl" = "jkl") 

但它不起作用。

谢谢!

+0

您是否尝试过使用css设置?对我来说,这会更容易。现在你正在创建两个同名的radioButtons元素。 –

回答

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

嗨,你想要两个单独的单选按钮?它的标签为$ hr,而不是$ hr。 也,你应该给每个收音机框独特的名称。 test1和test2。

+1

嗨,如果收音机名称不同,可以一次选择。 – user3355655

3

在我使用Shiny应用程序开发的经验中,我发现现代浏览器的“检查源代码”功能非常强大。它可以让你看到网站后面的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) 
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>'); 
          }) 
          ")))