>source

flexdashboard에서 selectInput()과 checkedGroupInput()을 결합하여 선택을 허용하고 싶습니다. 그러나 데이터가 올바르게 업데이트되지 않고 무엇이 잘못되었는지 알 수 없습니다.

이 SO-예제에서 장난감 예를 사용하고 확인란을 포함했습니다. 확인란이 여전히 무시되고 code의 다른 부분을 엉망으로 만드는 것 같습니다.

누군가가 code를 조정하여 선택이 팀, 이름 또는 연도의 세 열 중 하나를 기반으로 할 수 있도록 하면 좋을 것입니다.

---
title: "example"
output:
  flexdashboard::flex_dashboard:
    orientation: columns
    vertical_layout: fill
    runtime: shiny
---
```{r setup, include=FALSE}
library(DT)
library(shiny)
users <-data.frame(
  Name= c("Allan A","Barbara B","Charles C","Darwin D","Evelyn E","Frank F","Greg G","Hans H"),
  Team= c(1,2,3,3,2,1,2,2),
  Year= c(1999,1999,1999,2000,2000,2000,2003,2003),
  stringsAsFactors= FALSE)
```
Inputs {.sidebar}
=======================================================================
### Input Variables
```{r global_input}
### selection Input based on columns Team and Name
selectInput("teaminput","Team",c("All", unique(users$Team)), selected="All")
selectInput("userinput","User Name", c("All", unique(users$Name) ), selected="All")
### Add Input from CheckboxGroup based on Year starting with all
checkboxGroupInput("yearinput", label= "Year",choices=  unique(users$Year), selected=unique(users$Year), inline= TRUE)
### Filter Team based on one of the three choices (Team, Name, Year)
teamFiltered <-reactive(users[input$teaminput=="All" |
                                 users$Team==input$teaminput |
                                 users$Year==input$yearinput,])
### Observe if userinput changes based on SELECTION
observe(updateSelectInput(session,"userinput",
                          choices= c( unique(teamFiltered()$Name)),
                          selected="All"))
### Observe if yearinput changes based on CHECK BOX
observe(updateCheckboxGroupInput(session,"yearinput",
                                  choices=  teamFiltered()$Year,
                                  selected="All"))
```
Results
=======================================================================
### Intake Coordinator KPIs
```{r daily_table}
userFiltered <-reactive(teamFiltered()[input$userinput=="All" |
                         teamFiltered()$Name==input$userinput |
                         teamFiltered()$Year==input$yearinput,])
renderDataTable(userFiltered())
```

  • 답변 # 1

    이것을 시도하십시오

    library(DT)
    library(shiny)
    users <-data.frame(
      Name= c("Allan A","Barbara B","Charles C","Darwin D","Evelyn E","Frank F","Greg G","Hans H"),
      Team= c(1,2,3,3,2,1,2,2),
      Year= c(1999,1999,1999,2000,2000,2000,2003,2003),
      stringsAsFactors= FALSE)
    ui <-fluidPage(
    ### selection Input based on columns Team and Name
    selectInput("teaminput","Team",c("All", unique(users$Team)), selected= "All", multiple= TRUE),
    selectInput("userinput","User Name", c("All", unique(users$Name) ), selected="All", multiple= TRUE),
    ### Add Input from CheckboxGroup based on Year starting with all
    checkboxGroupInput("yearinput", label= "Year",choices=  unique(users$Year), selected=unique(users$Year), inline= TRUE),
    DTOutput("t1")
    )
    server <-function(input, output, session) {
    ### Filter Team based on one of the three choices (Team, Name, Year)
    teamFiltered <-reactive(users["All" %in% input$teaminput |
                                     users$Team %in% input$teaminput,])
    ### Observe if userinput changes based on SELECTION
    observeEvent(c(input$yearinput,input$teaminput), {
      updateSelectInput(session,"userinput", choices= c( unique(teamFiltered()$Name)), selected=unique(teamFiltered()$Name)
                        )
      })
    ### Observe if yearinput changes based on CHECK BOX
    observeEvent(c(input$userinput,input$teaminput), {
      updateCheckboxGroupInput(session,"yearinput", choices=  unique(teamFiltered()$Year),
                                     selected=unique(teamFiltered()$Year))
      })
      ### Intake Coordinator KPIs
    userFiltered <-reactive(teamFiltered()[ "All" %in% input$userinput |
                                              teamFiltered()$Name %in% input$userinput &amp;
                                              teamFiltered()$Year %in% input$yearinput,])
    output$t1 <-renderDT(userFiltered())
    }
    shinyApp(ui, server)
    

    해당 code를 사용할 때 팀 및 이름을 통해 필터링할 수 없습니다. 년 만 작동합니다.

    Jens2022-02-13 18:39:12

    업데이트된 code를 시도하십시오.

    YBS2022-02-13 18:39:12

    죄송합니다. 여전히 같은 문제입니다. 팀이나 이름을 선택하면 아무 일도 일어나지 않습니다.

    Jens2022-02-13 18:39:12

    그것은 나를 위해 잘 작동합니다.

    YBS2022-02-13 18:39:12

    예, 작동합니다! 이름을 삭제(!)해야 작동하는지 알 수 없었습니다. 감사합니다!

    Jens2022-02-13 10:04:24
  • 이전 python : 줄 바꿈 문자 "/n" 없이 .txt 파일에서 줄을 추가하는 방법 [중복]
  • 다음 html 및 javascript를 사용하여 알파벳 순서로 요소를 정렬하는 방법은 무엇입니까?