#r #shiny #shinydashboard
#r #блестящий #shinydashboard
Вопрос:
Я хочу показать некоторые флажки, основанные на вводе переключателя в dashboardbody shinydashboard. Однако я могу это сделать, но эти флажки не выровнены по горизонтали. Я хочу создать матрицу из этих флажков в виде трех столбцов и нескольких строк, также хочу выровнять их с правой стороны dashboardbody, а не по центру.
Есть ли какой-либо способ добиться этого? P.S. — Я пробовал использовать checkboxgroup, но я не могу установить идентификаторы для отдельного флажка.
Ниже приведен код :
library(shiny)
library(shinyjs)
library(shinydashboard)
Scenario <- c("Personal Information", "Academic Information")
shinyApp(
ui = dashboardPage(title = "My Page",
dashboardHeader(
title = "My Header",
titleWidth = 200
),
dashboardSidebar(
width = 200,
sidebarMenu(
menuItem("My Data", selected = FALSE,
menuSubItem(text = "My Data", tabName =
"my_data", newtab = TRUE, selected = FALSE)
)
)
),
dashboardBody(
tabItems(
# First tab content
tabItem(tabName = "my_data",
h2("Please select fields"),
fluidRow(column(12,radioButtons('rbscenario',
NULL, Scenario, inline=TRUE))),
uiOutput('checkboxes',inline = TRUE)
)
))),
server = function(input, output){
observe({
input$absubmit
if(input$rbscenario == "Personal Information"){
output$checkboxes <- renderUI({
dashboardBody(fluidRow(column(6,
checkboxInput('CB_FN', 'First Name', value = FALSE),
checkboxInput('CB_MN', 'Middle Name', value = FALSE),
checkboxInput('CB_LN', 'Last Name', value = FALSE),
checkboxInput('CB_DOB', 'Date of Birth', value = FALSE),
checkboxInput('CB_GN', 'Gender', value = FALSE),
checkboxInput('CB_CT', 'City', value = FALSE))),
actionButton('abSubmit',"Submit", icon = NULL)
)})}
else if(input$rbscenario == "Academic Information"){
output$checkboxes <- renderUI({
dashboardBody(fluidPage(
fluidRow(column(12,
checkboxInput('CB_SC', 'School', value = FALSE, width = NULL),
checkboxInput('CB_CL', 'College', value = FALSE, width = NULL),
checkboxInput('CB_POS', 'Primary OS', value = FALSE, width = NULL),
checkboxInput('CB_PLN', 'Primary Programming Language', value = FALSE, width = NULL),
checkboxInput('CB_PDB', 'Database', value = FALSE, width = NULL),
checkboxInput('CB_NT', 'Networking', value = FALSE, width = NULL))),
actionButton('abSubmit2',"Submit", icon = NULL)
))})}
})
})
Ответ №1:
Проблема заключалась в том, что dashboardBody()
было использовано в неправильном месте, что привело к созданию большого левого поля. Строки и столбцы создаются вручную.
Я заменил эту часть вашего кода
dashboardBody(fluidRow(column(6,
checkboxInput('CB_FN', 'First Name', value = FALSE),
checkboxInput('CB_MN', 'Middle Name', value = FALSE),
checkboxInput('CB_LN', 'Last Name', value = FALSE),
checkboxInput('CB_DOB', 'Date of Birth', value = FALSE),
checkboxInput('CB_GN', 'Gender', value = FALSE),
checkboxInput('CB_CT', 'City', value = FALSE))),
actionButton('abSubmit',"Submit", icon = NULL)
)
с помощью
div(
fluidRow(
column(4,
checkboxInput('CB_FN', 'First Name', value = FALSE),
checkboxInput('CB_MN', 'Middle Name', value = FALSE)),
column(4,
checkboxInput('CB_LN', 'Last Name', value = FALSE),
checkboxInput('CB_DOB', 'Date of Birth', value = FALSE)),
column(4,
ceckboxInput('CB_GN', 'Gender', value = FALSE),
checkboxInput('CB_CT', 'City', value = FALSE))
),
actionButton('abSubmit',"Submit", icon = NULL)
)
чтобы получить это
Аналогично, вам также следует заменить dashboardBody()
на div()
во втором условии if (Академическая информация).
Комментарии:
1. Я предполагаю, что операционная система хочет выровнять флажки по «Личной информации» (без пробелов между левой границей и флажками). Возможно ли это?