我正在创建一个闪亮的应用程序,并遇到了一个问题,当我尝试根据我的复杂 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 不适用