如何在Shiny模块中使用反应参数?

时间:2016-10-05 14:02:52

标签: r module shiny

我有一个闪亮的仪表板页面,其中有几个图表,我想分享一个共同的日期选择器,但是将这些图表放在单独的模块中。

我理解当我使用callModule时,我需要使用反应性

来传递对象
  

如果模块需要访问不属于模块的输入,则包含应用程序应传递包含在反应式表达式中的输入值(即反应式(...)):

     

callModule(myModule, "myModule1", reactive(input$checkbox1))

但是,我不明白在另一边做什么。

中的

graphRoFCUI("RoFCNameSpace"),
dateRangeInput("dateRange", "Select Date Range:"
                             , start = max("2016-6-27", Sys.Date()-366)
                             , end = Sys.Date()
                             , min = "2016-6-27"
                             , max = Sys.Date()
            )
服务器中的

callModule(graphRoFC, id = "RoFCNameSpace", conn, reactive(input$dateRange))

在我的模块中.R:

graphRoFCUI <- function(id) {
  ns <- NS(id)
  plotlyOutput(outputId = ns("RoFCOverTime"))
}

...
graphRoFC <- function(input, output, session, conn, dateRange) {
  limitDateRangePercentRoFCDF <- reactive({
    PercentRoFCDF.dateLimited <- subset(PercentRoFCDF, TicketLocalCreatedDate > dateRange[1] & TicketLocalCreatedDate < dateRange[2])
    return(PercentRoFCDF.dateLimited)
  })

...
}

我得到的是:

Warning: Error in $: object of type 'closure' is not subsettable
Stack trace (innermost first):
    80: as.Date
    79: ggplotly [sdesc.R#43]
    78: func
    77: origRenderFunc
    76: output$RoFCNameSpace-RoFCOverTime
     1: runApp

1 个答案:

答案 0 :(得分:2)

如果不查看完整的可重现代码,很难肯定。但是,每当您遇到错误object of type 'closure' is not subsettable时,它几乎总意味着您有一个您未能使用()的被动对象。我的猜测是你需要改变这一行:

PercentRoFCDF.dateLimited <- subset(PercentRoFCDF, TicketLocalCreatedDate > dateRange[1] & TicketLocalCreatedDate < dateRange[2])

PercentRoFCDF.dateLimited <- subset(PercentRoFCDF, TicketLocalCreatedDate > dateRange()[1] & TicketLocalCreatedDate < dateRange()[2])