Shiny应用server端调用selectInput报object 'input'未找到如何解决
问题原因
- fpp3 提供的
model()函数与X_13ARIMA_SEATS()方法使用 tidyverse 体系的非标准评估逻辑,会在自身的执行环境内解析公式内的变量,不会主动读取 Shiny 服务端的input对象,因此直接在公式内写input$decompselect会抛出找不到input的错误。 input$decompselect返回的是字符串格式的变量名,无法直接作为公式左侧的变量标识符使用,需要先转换为符号对象才能被公式正确识别。
修复后完整代码
library(shiny) library(plotly) library(regclass) library(fpp3) ui <- fluidPage( selectInput("decompselect", "Choose variable", names(aus_production)), plotOutput("decomp") ) server <- function(input,output){ output$decomp <- renderPlot({ aus_production %>% model(x11 = X_13ARIMA_SEATS(!!sym(input$decompselect) ~ x11())) %>% components() %>% autoplot() }) } shinyApp(ui=ui, server=server)
关键修改说明
- 用
sym()函数将字符串类型的变量名转换为 R 语言的符号对象,让公式可以识别这是一个变量而非普通字符串 - 用
!!(注入运算符)将符号对象直接注入到公式的评估环境中,绕过model()函数的非标准评估限制,确保变量名能被正确解析。
内容的提问来源于stack exchange,提问作者An Bha
相关产品推荐
相关产品推荐

