2017-12-17 11 views
0

마침내 사용자 입력에 반응하는 플롯을 얻는 방법을 알아 냈습니다 ... 불행히도 사용자는 올해 범위, 골퍼 및 코스를 선택해야합니다 . 나는 그들이 원하면 1 년이나 골퍼로, 또는 1 년이나 과정으로 걸러 내기를 원합니다. 어떤 코드가 채워지지 않은 경우에도 플롯을 반환하도록 코드를 수정하려면 어떻게해야합니까? 내가 아직 이대로 꽤 도움이되는 어떤 도움이라도 대단히 감사 할 것입니다! 감사!모든 옵션이 선택된 경우에만 반짝임으로 필터링 됨

내가 정말이 테스트 할 수 없습니다 코드의 좀 더 보지 않고 히스토그램

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

    updateSelectizeInput(session, inputId = 'golfer', choices = dkDatabase$Golfer, selected = "Woodland, Gary", server = TRUE) 
    updateSelectizeInput(session, inputId = 'course', choices = dkDatabase$Course, server = TRUE) 

    output$points <- renderPlot({ 
    dkDatabase %>% 
    filter(dkDatabase$Year >= input$year[1], 
     dkDatabase$Year <= input$year[2], 
     dkDatabase$Golfer == input$golfer, 
     dkDatabase$Course == input$course) %>% 
    ggplot(aes(dkPoints)) + geom_histogram(fill="green", colour = "black") + 
    xlab("DK Points") + 
    ylab("Events") 
    }) 
} 

답변

0

을 그리는 데 필요한 서버 로직을 정의하지만, 몇 가지 작은 수정을 작동합니다. 당신은 단일 사용하는 것입니다 경우 문 (내 머리 위로를 불러올 수없는 경우

selectInput(..., Choose = '') 

그리고 서버 측 코드에 추가 : UI를 코드에서

는 기본 입력을 선택 설정 따옴표, 큰 따옴표 또는 널 (null) 종료 테스트 밖으로 모두 1이 작동합니다) :

if (input$golfer == '') { 
dkDatabase %>% 
filter(dkDatabase$Year >= input$year[1], 
     dkDatabase$Year <= input$year[2], 
     dkDatabase$Course == input$course) 
} 
else if (input$Course == ''){ 
dkDatabase %>% 
filter(dkDatabase$Year >= input$year[1], 
     dkDatabase$Year <= input$year[2], 
     dkDatabase$Golfer == input$golfer) 
} 
else { 
dkDatabase %>% 
    filter(dkDatabase$Year >= input$year[1], 
     dkDatabase$Year <= input$year[2], 
     dkDatabase$Golfer == input$golfer, 
     dkDatabase$Course == input$course) 
} 

output$points <- renderPlot({ 
    ggplot(aes(dkPoints())) + geom_histogram(fill="green", colour = "black") + 
    xlab("DK Points") + 
    ylab("Events") 
    }) 

내가 해 위를 입력하지 않을 경우 어떻게 할 것인지를 해결하지만, 내가 무엇을 할 것이라고하는 것은 자동으로 설정하지 않았다 모든 데이터를 포함하는 시작 날짜와 종료 날짜, 그리고 사용자가 원하는대로 변경할 수 있습니다.

+0

감사합니다. Alex는 "year"를 선택하고 골퍼를 선택하고 코스를 선택해야하는 문제가 있습니다. 두 개만 선택하고 세 번째 옵션은 비워두고 그래프를 계속 표시하려고합니다. 현재 세 가지를 모두 선택하지 않으면 플롯에 아무 것도 표시되지 않습니다. –

+0

필터 중 하나를 선택하지 않으면 데이터가 어떻게 표시되어야합니까? 즉, 1 년이 선택되지 않으면 모든 연도를 표시해야합니까? 아니면 모든 골퍼? 논리에 대해 좀 더 명확하게 질문을 업데이트 할 수 있습니까? 이 작업을 수행하려면 서버 측에 if else 문을 포함시켜야합니다. 논리를 좀 더 잘 이해하면 대답을 업데이트 할 것입니다. –

+0

네, 죄송합니다 ... 제가 언급 한 것처럼 저는 이것에 대해 아주 새로운 사람입니다. 시간 프레임과 골퍼를 골랐다면 모든 dkPoints가 히스토그램에 그려지기를 바랍니다. 모든 옵션이 채워지면 히스토그램 만 생성됩니다. 사용자가 몇 개의 옵션을 선택했는지에 관계없이 선택한 필터를 기반으로 dkPoints 막대 그래프를 볼 수있게하려고합니다. 그게 더 확실한 지 모르겠습니다. –