R有光泽的创建基于复选框的动态数字输入

时间:2018-08-22 21:22:31

标签: r shiny shinydashboard

我正在编写的程序使用一个电子表格进行评分,然后创建其接收到的数据的表格,图表和摘要。但是,我希望多个用户能够使用它。这意味着每种类型的成绩(作业,测验,测验等)的权重对于每个用户而言都是不同的。

我想做的是创建一个checkboxGroupInput,该列表生成不同等级等级的列表(从电子表格的“类型”列中读取),然后在选中每个复选框时会弹出一个numericInput,允许用户选择重量。这是示例图片。

Example Pic (对不起,我现在没有足够的声誉来发布图片)

但是,我不知道如何将numericInput呈现为每个复选框的True / False值。我知道如何根据组输入来呈现表以显示列,例如在this example中,但是我不知道如何初始化未知数量的numericInputs,因为每个输入都是其自己的变量。这可能吗?我想不出另一种方法来实现自己想要的。

这是我到目前为止的代码(摘要)。

ui <- fluidPage(
          dashboardBody(
      tabBox(
        id = 'tabset1',
        width = '100%',
        tabPanel('Enter weights', 
                  splitLayout(uiOutput('type'), uiOutput('weight'))),
        tabPanel('Grades Graph', plotOutput('individualGraph')),
        tabPanel('Grades Table', dataTableOutput('summaryDT')),
        tabPanel('Summary by Unit', plotOutput('summaryBarGraph'), br(), dataTableOutput('summaryUnitDT')),
        tabPanel('Class Averages', plotOutput('classAverageGraph'), br(), dataTableOutput('classAverageTable'))
      )
    )

server <- function(input, output, session) {

  output$type <- renderUI({
    df <- data.frame(grades())
    choices <- unique(pull(df, Type))
    checkboxGroupInput(inputId = 'typeVar',
                label = 'Select Type',
                choices = choices,
                selected = choices)
  })

  output$weight <- renderUI({
    numericInput(inputId = 'weightVar',
                 label = 'Select Weight %', value = 50,
                 width = 50)
  })
}

任何帮助/指导将不胜感激!如果我认为这是实现我想要的最好方法的错误,请告诉我。我愿意接受更多建议。

1 个答案:

答案 0 :(得分:0)

首先,checkboxGroupInput()在这里有意义吗?似乎单选按钮UI元素与您要做的更好的事情匹配(因为单选按钮向用户暗示一次只能检查一个)。其次,您可以尝试使用一个数字输入并使用updateNumericInput()来在单选按钮更改时对其进行更改吗?然后,在处理数字更改时,您的条件语句只需要查看数字以及选中了哪个单选按钮即可。

我正在设想这样的事情:

observeEvent(input$RadioButton, {
    updateNumericInput(session, "NumericInputName", value=theVariable)
}

其中变量是先前为该类别(测试,测验等)输入的值,如果没有为该类别输入任何内容,则为0。