我有这种单选按钮:
tag$hr
但是我想添加一个像radioButtons("test", "test:",
c("def" = "def"),
tag$hr ,
radioButtons("test", "test:",
c("ghi" = "ghi",
"jkl" = "jkl")
这样的分隔符来将def与其他分隔符分开。
我试着像这样制作两个列表:
{{1}}
但它不起作用。
谢谢!
答案 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>');
})
")))