我有像这样选择输入下拉列表:
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
})
但似乎没有用。 任何想法我可以改变什么才能使其正常工作?
答案 0 :(得分:19)
精彩的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)
答案 1 :(得分:3)
你需要一个其他条件。令人惊讶的是,如果条件为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