簡體   English   中英

R Shiny基於復選框創建動態數字輸入

[英]R Shiny Create Dynamic Numeric Input Based off Checkboxes

我正在編寫的程序使用一個電子表格進行評分,然后創建其接收到的數據的表,圖和摘要。 但是,我希望多個用戶能夠使用它。 這意味着每種類型的成績(作業,測驗,測驗等)的權重對於每個用戶而言都是不同的。

我要嘗試做的是創建一個checkboxGroupInput,該列表生成不同等級的列表(從電子表格的“類型”列中讀取),然后在選中每個復選框時,將彈出一個numericInput,允許用戶選擇一個重量。 這是示例圖片。

圖片示例 (對不起,我現在沒有足夠的聲譽來發布圖片)

但是,我不知道如何將numericInput呈現為每個復選框的True / False值。 我知道如何根據組輸入來呈現表以顯示列,如本例所示 ,但我不知道如何初始化未知數量的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)
  })
}

任何幫助/指導將不勝感激! 如果我認為這是實現我想要的最好方法的錯誤,請告訴我。 我願意接受更多建議。

首先,checkboxGroupInput()在這里有意義嗎? 似乎單選按鈕UI元素與您要做的更好的事情匹配(因為單選按鈕向用戶暗示一次只能檢查一個)。 其次,您可以嘗試使用一個數字輸入並使用updateNumericInput()來在單選按鈕更改時對其進行更改嗎? 然后,在處理數字更改時,您的條件語句將只需要查看數字以及選中了哪個單選按鈕。

我正在設想這樣的事情:

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

其中,Variable是先前為該類別輸入的值(測試,測驗等);如果沒有為該類別輸入任何內容,則為0。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM