Блестящий selectInput, чтобы выбрать все из выпадающего - PullRequest
0 голосов
/ 07 мая 2018

У меня есть выпадающий список selectinput, как это:

selectInput("locInput", "Location", choices=c("All","New Mexico", "Colorado", "California"))

Чего я хочу добиться, так это сделать, чтобы выбор входа по умолчанию не фильтровался по чему-либо, например, когда выбрано «Все», в нем должны быть перечислены все наблюдения (например, из Калифорнии, Колорадо и т. Д.) Поэтому я попытался создать для этого простую логику:

server <- function(input, output) {
  filtered<-reactive({
    shows %>%
    filter(Length >= input$lenInput[1],
           Length <= input$lenInput[2],
           if (input$locInput != "All"){
           Location==input$locInput
    })

Но, похоже, не работает. Любые идеи, что я могу изменить, чтобы заставить его работать правильно?

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Там замечательный пакет shinyWidgets, который уже имеет функцию Select All в своем pickerInput

library(shiny)
library(shinyWidgets)

ui <- basicPage(
  sidebarPanel(
    pickerInput("locInput","Location", choices=c("New Mexico", "Colorado", "California"), options = list(`actions-box` = TRUE),multiple = T)
  )
)

server <- function(input, output) {

  observe({
    print(input$locInput)
  })

}

shinyApp (ui = ui, server = server)

enter image description here

0 голосов
/ 07 мая 2018

Вам нужно еще условие. Удивительно, но это работает, если условие TRUE, но если оно FALSE, то filter имеет ошибку, поскольку у вас есть пустое условие. Чтобы решить эту проблему, просто добавьте else TRUE, который не будет фильтровать строки (поскольку TRUE равно TRUE для всех строк):

data(iris)
iris %>% filter(Petal.Length > 6.4,
                if (FALSE) Sepal.Length > 7.7 else TRUE)
  Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
1          7.6         3.0          6.6         2.1 virginica
2          7.7         3.8          6.7         2.2 virginica
3          7.7         2.6          6.9         2.3 virginica
4          7.7         2.8          6.7         2.0 virginica

iris %>% filter(Petal.Length > 6.4,
                if (TRUE) Sepal.Length > 7.6 else TRUE)
  Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
1          7.7         3.8          6.7         2.2 virginica
2          7.7         2.6          6.9         2.3 virginica
3          7.7         2.8          6.7         2.0 virginica
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...