2016-03-01 2 views
1

Поэтому у меня есть некоторые данные, которые выглядят так:фильтрация динамически checkboxgroupinput в Rshiny

lat   long   group 
40.75482559 -73.84514618 One 
40.75759888 -73.84442902 Two 
40.75468826 -73.84588623 One 
40.82676315 -73.92416382 One 
40.82736206 -73.92511749 Two 
40.787167 -73.977325  Two 
40.82994843 -73.92955017 Two 
40.75819016 -73.844841  One 
40.82663345 -73.92651367 Two 

И я пытаюсь динамически отображать LatLong точек их группой.

В моем ui.R коде, у меня есть:

checkboxGroupInput("group", 
        label = h3("Checkbox group"), 
        choices = list('One' = 1, 
            'Two' = 2) 
        )) 

В моем server.R коде, у меня есть:

filteredData <- reactive({ 
    df <- randomtaxi[randomtaxi$group == "One",] 
    return(df) 
    }) 

Который работает отлично. Но в тот момент, когда я пытаюсь добавить что-то вроде

df <- randomtaxi[randomtaxi$group == input$group,] 

Он падает. Я также пытался что-то вроде:

if (input$team == 1){ 
    df <- filter(df, group == "One") 

и

if (input$team == "One"){ 
    df <- filter(df, group == "One") 

Но я не могу заставить его работать. Как я могу динамически подмножать данные, используя CheckboxGroupInput в RShiny?

+0

'input $ group' будет вектор? Попробуйте использовать '% in%' - 'randomtaxi [randomtaxi $ group% in% input $ group,]' – SymbolixAU

+0

Спасибо, попробовал, но он все равно не работает - на самом деле он будет работать, если вы просто скопируете код (например, 'groupz = c (« Один, два »), но по какой-то причине он не будет принимать динамический контент. Сообщение об ошибке читается:« Предупреждение: ошибка в том, если: отсутствует значение, где требуется TRUE/FALSE ». Может это что-то с тем, как я построил checkboxGroupInput UI? – skathan

+0

внутри вашего 'filterData <- реактивного ({' положить 'print (input $ group)' заявление и посмотреть, что он там там – SymbolixAU

ответ

1

Я думаю, что ваш choices нужно быть вектором, а не список

checkboxGroupInput("group", 
       label = h3("Checkbox group"), 
       choices = c('One' = 1, 
          'Two' = 2) 
       )) 

Затем вам нужно преобразовать 1 и 2 к "One" и "Two" соответственно так, что ваше условие фильтра/подмножество будет работать.

Смежные вопросы