Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 具有可选筛选功能的Shining中的反应式数据表_R_Datatable_Shiny_Datatables_Reactive Programming - Fatal编程技术网

R 具有可选筛选功能的Shining中的反应式数据表

R 具有可选筛选功能的Shining中的反应式数据表,r,datatable,shiny,datatables,reactive-programming,R,Datatable,Shiny,Datatables,Reactive Programming,我在创建一个简单闪亮的应用程序时遇到了双重问题。我知道这个话题在其他几个问题中都有涉及,但在研究了这些问题之后,我还没有找到一个能完全涵盖我的问题的问题 我希望呈现mtcars表(默认选项为完整的32行),然后我希望在允许多个选择的档位数量上应用反应过滤器 以下代码在许多方面都不起作用: 除非设置了“齿轮过滤器”,否则不会渲染mtcars表。相反,我在应用程序中收到一条错误消息:“结果的长度必须为32,而不是0” 选择多个档位级别不能正确相加。当我分别选择每个档位编号时,表格会正确呈现,但是,比

我在创建一个简单闪亮的应用程序时遇到了双重问题。我知道这个话题在其他几个问题中都有涉及,但在研究了这些问题之后,我还没有找到一个能完全涵盖我的问题的问题

我希望呈现mtcars表(默认选项为完整的32行),然后我希望在允许多个选择的档位数量上应用反应过滤器

以下代码在许多方面都不起作用:

  • 除非设置了“齿轮过滤器”,否则不会渲染mtcars表。相反,我在应用程序中收到一条错误消息:“结果的长度必须为32,而不是0”

  • 选择多个档位级别不能正确相加。当我分别选择每个档位编号时,表格会正确呈现,但是,比如说,当我组合显示档位编号3和4时,只返回了10行,这是不正确的

  • 我提前感谢你的帮助

     ui <- fluidPage(
      sidebarLayout(
        mainPanel(
    
          selectInput("pickvalue", label = "Gears", mtcars$gear,
                      selected = NULL, multiple = T)),
    
    
          tableOutput("tableOut")
    
        )
      )
    
    
    server <- function(input, output, session){
    
    
     gears <- reactive({
        mtcars %>%  filter(gear == input$pickvalue) %>% select(-gear)
      })
    
      output$tableOut<- renderTable({gears()
      })
    
    }
    
    shinyApp(ui = ui, server=server)
    

    ui解决问题的关键是

  • 当您的输入为
    NULL
    (即,当您第一次打开应用程序时)时,创建一个
    if语句
    ,该语句只会吐出数据集
  • 选择多个输入时,需要使用%
  • 运算符中的
    %
    见下面的代码:

    ui <- fluidPage(
      sidebarLayout(
        mainPanel(
    
          selectInput("pickvalue", label = "Gears", unique(mtcars$gear),
                      selected = NULL, multiple = T)),
    
    
        tableOutput("tableOut")
    
      )
    )
    
    
    server <- function(input, output, session){
    
    
      gears <- reactive({
    
        dat <- mtcars
    
        if (!is.null(input$pickvalue)){dat <- dat %>% filter(gear %in% input$pickvalue)} 
    
        dat <- dat %>% select(-gear)
    
        return(dat)
    
      })
    
      output$tableOut<- renderTable({gears()})
    
    }
    
    shinyApp(ui = ui, server=server)
    

    ui解决问题的关键是

  • 当您的输入为
    NULL
    (即,当您第一次打开应用程序时)时,创建一个
    if语句
    ,该语句只会吐出数据集
  • 选择多个输入时,需要使用%
  • 运算符中的
    %
    见下面的代码:

    ui <- fluidPage(
      sidebarLayout(
        mainPanel(
    
          selectInput("pickvalue", label = "Gears", unique(mtcars$gear),
                      selected = NULL, multiple = T)),
    
    
        tableOutput("tableOut")
    
      )
    )
    
    
    server <- function(input, output, session){
    
    
      gears <- reactive({
    
        dat <- mtcars
    
        if (!is.null(input$pickvalue)){dat <- dat %>% filter(gear %in% input$pickvalue)} 
    
        dat <- dat %>% select(-gear)
    
        return(dat)
    
      })
    
      output$tableOut<- renderTable({gears()})
    
    }
    
    shinyApp(ui = ui, server=server)
    

    ui我相信您需要
    gear%在%input$pickvalue中
    如果允许多个选项按…过滤,我相信您需要
    gear%在%input$pickvalue中
    如果允许多个选项按…过滤,谢谢!我想我会有一个关于更新选择输入的问题。假设我有额外的selectInput子句,如Carb:selectInput(“pickvalue2”,label=“Carb”,unique(mtcars$Carb),selected=NULL,multiple=T)),Carb有6个唯一值,但并非所有这些值都与Gears的3个唯一值相结合。是否可以反应式更新selectInputs,以便它只显示齿轮和CARB的现有组合,而不返回空行?是的,您需要使用uiOutput/renderUI将第二个selectInput放在服务器端,然后根据input$pickvalue的SelectionThank筛选选项,但哪一个是“第二个”,因为我可以开始用Carb或Gears进行过滤在这种情况下,如果你想让Carb或Gears成为第一个过滤器,那么你必须将它们都放在服务器中,并在使用另一个过滤器时使用一些观察捕捉。这会变得更加复杂,但我知道,我从未实施过任何观察者/行动,这似乎有点太多了。你可能有一些很好的教程,我可以从中学习吗?谢谢!我想我会有一个关于更新选择输入的问题。假设我有额外的selectInput子句,如Carb:selectInput(“pickvalue2”,label=“Carb”,unique(mtcars$Carb),selected=NULL,multiple=T)),Carb有6个唯一值,但并非所有这些值都与Gears的3个唯一值相结合。是否可以反应式更新selectInputs,以便它只显示齿轮和CARB的现有组合,而不返回空行?是的,您需要使用uiOutput/renderUI将第二个selectInput放在服务器端,然后根据input$pickvalue的SelectionThank筛选选项,但哪一个是“第二个”,因为我可以开始用Carb或Gears进行过滤在这种情况下,如果你想让Carb或Gears成为第一个过滤器,那么你必须将它们都放在服务器中,并在使用另一个过滤器时使用一些观察捕捉。这会变得更加复杂,但我知道,我从未实施过任何观察者/行动,这似乎有点太多了。你可能有一些好的教程,我可以从中学习吗?