使用shinydashboard制作airquality可刷选仪表盘遇'need finite xlim values'错误求助
解决"Error: need finite 'xlim' values"问题及代码修正
你的代码存在几个关键错误,导致了该报错,以下是问题分析和修正方案:
错误点说明
- 拼写错误导致无效变量:
renderPlot中pch=as.character(airqualityl$ozone)里的airqualityl是笔误,应为airquality,这个错误会让绘图函数无法获取正确的点样式参数,引发绘图异常。 brushedPoints列名不匹配:airquality数据集的温度列名为temp,但代码中写的是yvar = "temperature",列名不匹配会导致刷选功能无法识别y轴变量,触发xlim相关错误。- NA值处理未统一应用:你尝试去除NA,但未确保绘图和刷选使用同一版去NA后的数据集,可能残留NA值干扰绘图范围计算。
修正后的完整代码
library(shinydashboard) library(datasets) library(dplyr) # 统一预处理:移除含NA的行 clean_airquality <- airquality %>% drop_na() ui <- dashboardPage( dashboardHeader(title = "Brushing"), dashboardSidebar(collapsed = TRUE), dashboardBody( fluidRow( plotOutput("AirqualityPlot", brush = "brushing"), box(verbatimTextOutput("coords"), width = 12) ) ) ) server <- function(input, output){ output$AirqualityPlot <- renderPlot({ plot(x = clean_airquality$wind, y = clean_airquality$temp, xlab = "Wind (mph)", ylab = "Temperature(F)", pch = as.character(clean_airquality$ozone)) }) output$coords <- renderPrint({ brushedPoints(clean_airquality, input$brushing, xvar = "wind", yvar = "temp") }) } shinyApp(ui = ui, server = server)
修正细节
- 修正了
airqualityl的拼写错误,统一使用预处理后的clean_airquality数据集。 - 将
brushedPoints中的yvar参数改为正确的列名temp。 - 用
dplyr::drop_na()统一去除所有含NA的行,确保绘图和刷选数据一致。 - 移除了
box函数中多余的嵌套括号,规范代码格式。
内容的提问来源于stack exchange,提问作者Rojo
相关产品推荐
相关产品推荐

