Нужно выровнять флажки по горизонтали в dashboardbody shinydashboard?

#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. Я предполагаю, что операционная система хочет выровнять флажки по «Личной информации» (без пробелов между левой границей и флажками). Возможно ли это?