我有这样的selectinput下拉:
selectInput("locInput", "Location", choices=c("All","New Mexico", "Colorado", "California"))
Run Code Online (Sandbox Code Playgroud)
我想要实现的是默认选择输入而不是任何东西过滤,就像选择"全部"时那样它应该列出所有观察结果(所以来自加利福尼亚州,科罗拉多州等)所以我试图做的是创建简单的逻辑这个:
server <- function(input, output) {
filtered<-reactive({
shows %>%
filter(Length >= input$lenInput[1],
Length <= input$lenInput[2],
if (input$locInput != "All"){
Location==input$locInput
})
Run Code Online (Sandbox Code Playgroud)
但似乎没有用.任何想法我可以改变什么才能使其正常工作?
Por*_*hop 27
有美妙的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)
Run Code Online (Sandbox Code Playgroud)
你需要一个 else 条件。令人惊讶的是,如果条件为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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6726 次 |
| 最近记录: |