2015-06-19 18 views
5

i radyo düğmesi bu tür ettik:R Parlak radyo düğmesi liste seçimler içine ayırıcı eklemek

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

Ama diğerlerinden def ayırmak için tag$hr gibi bir ayırıcı eklemek istiyorum.

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

ama çalışmıyor: Böyle iki liste yapmaya çalıştı.

Teşekkürler!

+0

CSS ayarlarıyla oynamaya çalıştınız mı? Bana göre daha kolay olurdu. Şu anda aynı ada sahip iki radioButtons öğesi oluşturuyorsunuz. –

cevap

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

Merhaba, iki ayrı radyo düğmesi mi istiyorsunuz? Etiketler $ hr, etiket $ hr değil. da, her radyo kutusu için benzersiz bir isim vermelisiniz. test1 ve test2.

+1

Merhaba, radyoların farklı isimleri varsa, bir defada seçilebilirler. – user3355655

3

Parlak uygulama geliştirme konusundaki deneyimlerimde, modern tarayıcıların inanılmaz derecede güçlü "Inspect Source" işlevini buldum. Web sitelerinin arkasındaki HTML/CSS/JS'yi görebilmenizi ve ardından çalışmanızı modellemek için bunu kullanabilmenizi sağlar. Parlak, HTML/CSS'yi doğrudan uygulamanıza eklemenizi sağlar. Sağladığınız radioButtons komutunu çalıştırarak, Chrome'un geliştirici özelliğini kullanarak, radyo düğmelerini oluşturan tam HTML'yi görebildim. Ardından seçenekleriniz arasında doğrudan bir hr ekleyebilirsiniz. Ayrıca, kafasında radyo adı verilen yeni bir hr sınıfı ekledim çünkü varsayılan olarak saatin etrafında bir miktar dolgu var ve giriş kutusuna çok benzer bir gri. Ayrıca uygulamada başka bir yerde normal bir saat kullanmak isteyebilirsiniz.

Bunu yapmak için daha basit bir HTML/CSS pro olan birinin konuşabileceği daha basit bir yol olabilir. Bu yardımcı olur umarım.

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

İşte javascript/jQuery çözümü. def radyo düğmesini içeren div öğesini bulur ve bundan sonra bir <hr> ekler.

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>'); 
          }) 
          ")))