0

我正在创建一个闪亮的应用程序,并遇到了一个问题,当我尝试根据我的复杂 UI 过滤系统过滤数据时,我得到一个“参数长度为零”错误。

UI过滤系统的工作原理如下:

下面出现了一个新的 SelectInput,允许客户端选择一个玩家来分析他们的个人数据(选择 = 可以选择许多个人玩家) 在服务器中,我想然后基于过滤系统创建图。正如您在下面的代码中看到的,基于日期和团队的过滤很容易。但是,当我包含一些 IF 语句(注意我还没有所有必需的 IF 语句)来过滤根据类别过滤器的输入而更改的动态过滤器时,我收到“参数长度为零”错误。基于日期和团队的过滤很容易。但是,当我包含一些 IF 语句(注意我还没有所有必需的 IF 语句)来过滤根据类别过滤器的输入而更改的动态过滤器时,我收到“参数长度为零”错误。基于日期和团队的过滤很容易。但是,当我包含一些 IF 语句(注意我还没有所有必需的 IF 语句)来过滤根据类别过滤器的输入而更改的动态过滤器时,我收到“参数长度为零”错误。

我的假设是,当应用程序打开时,类别过滤器默认设置为“概述”。因此,年龄、位置和玩家过滤器尚不存在,因此服务器无法找到这些过滤器,并显示“参数长度为零”错误。注意:如果我删除 IF 语句,则错误将被删除(当然,该应用程序不会执行我想要的操作,但这可能会提供一些洞察,即错误专门在 IF 语句中)。

以下是相关代码:

'''

ui <- dashboardPage(
     fluidRow(
     box(title = "Athlete Body Composition",
         plotOutput("plot1")),
              box(collapsible =TRUE,
                  title = "Filters",
                  dateRangeInput("daterange", "Select Date Range",
                                 start = "2019-01-01",
                                 end = Sys.Date(),
                                 min = "2019-01-01",
                                 max = Sys.Date(),
                                 format = "yyyy/mm/dd",
                                 separator = "-"),
                 checkboxGroupInput("Teaminput", "Select Team", c("Team 1", "Team 2")), 
                 selectInput( "Category", "Select Category", c("Overview", "Position",          "Age", "Player")),
                 uiOutput('outputfilter'))
 ),
 )

 server <- function(session, input, output) {
           observeEvent(input$Category,{
               categoryfilterinput<- paste(input$Category)
               output$outputfilter <- renderUI({
               switch(categoryfilterinput,
                      "Position" = selectInput("positioninput", "Select Position", choices =          c("Forwards","Defencemen", "Goalies")),
                      "Age" = selectInput("ageinput", "Select Age Range", choices = c("less than 20","20-23", "23-25", "25-30", "more than 30")),
                      "Player" = selectInput("Playernameinput", "Select Player", choices = Roster$Playername))
 })
 })

 output$plot1 <- renderPlot({

                 filtered_data1 <- filter(DataFrame, Date >=    format(input$daterange[1]) & Date <= format(input$daterange[2])) %>% 
                 filter(Team %in% input$Teaminput)

 if (input$category == "Player") {
           filtered_data1 <- filtered_data1 %>% filter(Playername %in% input$Playernameinput)
   }

 if (input$category == "Overview") {
           filtered_data1 <- filtered_data1
   }


  ggplot(filtered_data1, aes(x= Date, y = Weight)) +
                     geom_point(size=2)
})
}

'''

任何帮助都会很棒!

这是DataFrame的头

球员姓名 日期 球队体重

chr date fct dbl

1 球员 1 2019-11-09 球队 1 94

2 球员 1 2019-11-16 球队 1 96

3 球员 2 2019-11-23 球队 2 95

4 球员 2 2019-11-30 球队 2 95.2

5 球员 1 2019-11-03 球队 1 不适用

6 球员 1 2019-12-27 球队 1 不适用

4

0 回答 0