基于复杂的 UI 过滤系统创建数据过滤器的问题选择输入取决于用户输入

问题描述

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

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

客户选择数据的日期范围 客户从 CheckBoxInput 中选择要分析的团队(选择 = Team 1、Team 2) 客户端从 SelectInput 中选择一个分析类别(选择 = 概览、年龄、位置、球员) a) 如果客户端选择“概览”,则不应发生任何事情(这将显示数据平均值的概览) b) 如果客户选择“年龄”,下面会出现一个新的 SelectInput,允许客户选择一个年龄范围进行分析(选择 =“小于 20”、“20-23”、“23-25”、“25-30 ","超过 30") c) 如果客户选择“位置”,下面会出现一个新的 SelectInput,允许客户选择要分析的位置(选择 = 前锋、后卫、守门员) d) 最后,如果客户端选择“玩家”,下面会出现一个新的 SelectInput,允许客户端选择一个玩家来分析他们的个人数据(选择 = 有很多个人玩家可以选择) 在服务器中,我想根据过滤系统创建图。正如您在下面的代码中看到的,基于日期和团队的过滤很容易。但是,当我包含一些 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 日期 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 Team 1 NA

6 人 1 2019-12-27 Team 1 NA

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...