You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R Shiny独立模块获取输入报错问题求助

问题解决方法

你的问题出在对模块返回值的使用逻辑上:filtersServer返回的是包含响应式对象的列表,而非可直接调用的响应式函数。

修正后的完整代码

library(shiny)
library(shinycssloaders)

filtersUI <- function(id) {
  ns <- NS(id)
  
  tagList(
    # Program input ------
    selectInput(
      inputId = ns('options'),
      label = 'Select program(s):',
      choices = c('A','B','C','D'),
      multiple = TRUE
    )
  )
}

filtersServer <- function(id){
  moduleServer(id, function(input,output,session){
    return(
      list(
        options = reactive({input$options})
        )
    )
  })
}

testUI <- fluidPage(
  filtersUI('inputs'),
  textOutput('filters') %>% 
    withSpinner()
)

testServer <- function(input,output,session) {
    filters <- filtersServer('inputs')
     
    output$filters <- renderPrint({
      # 访问列表中的响应式对象并调用它获取当前值
      filters$options()
    })
}

shinyApp(ui=testUI,server=testServer)

关键说明

  • filters是一个普通列表,其中的options元素才是响应式对象,必须通过filters$options()的方式获取实时选中的值
  • 如果后续添加更多过滤器,想要一次性打印所有值,可以遍历列表中的响应式对象:
    output$filters <- renderPrint({
      lapply(filters, function(reactive_obj) reactive_obj())
    })
    

内容的提问来源于stack exchange,提问作者Christine Swanson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 18:00:02