【发布时间】:2019-10-03 22:21:21
【问题描述】:
我正在开发一个闪亮的应用程序,我正在尝试根据复选框的输入过滤数据框,如果单击复选框,数据框将被过滤,否则数据框保持不变。如果选中该复选框,则必须在“CANONICAL”列中选择值为“YES”的行
我已经阅读过类似的问题(例如:Condition Filter in dplyr based on Shiny input),但我无法解决我的问题。
我的代码如下:
library(shiny)
library(DT)
library(dplyr)
library(shinyWidgets)
options(shiny.maxRequestSize = 100*1024^2)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
fileInput("file1", "Upload your File",
multiple = FALSE,
accept = c("text/csv",
"text/comma-separated-values,text/plain",
".csv")),
pickerInput("Consequence", "Consequence:",
choices = c( "x", "y","z"),
options = list(`actions-box` = TRUE),
multiple = TRUE ),
prettyCheckbox(inputId= "CANONICAL", label = "CANONICAL", value = FALSE, outline= TRUE, fill = TRUE, bigger = TRUE, status = 'success',width = NULL),
mainPanel(
dataTableOutput("contents")
)
))
server <- function(input, output) {
output$contents <- renderDT({
req(input$file1)
df <- read.delim(input$file1$datapath,
header = TRUE,
sep = '\t')
# Apply filters
df <- df %>%
filter(Consequence == input$Consequence ) %>%
{ if (input$CANONICAL) filter( CANONICAL == 'YES') }
return(df)
shinyApp(ui, server)
如果条件为(input$CANONICAL)、(input$CANONICAL == TRUE) 或(!is.null(input$CANONICAL)),则最后一个过滤器不起作用。我也尝试在单独的反应函数中定义条件,但似乎没有任何效果。
【问题讨论】:
标签: r user-interface shiny dplyr