R闪亮模块:从父服务器调用反应数据

时间:2017-08-02 17:54:46

标签: r module shiny

我正在尝试使用模块外部的反应数据调用R闪亮模块,我阅读了教程并知道'()'不应包含在响应数据的callModule参数中。但是我收到一条错误消息: 这样做后Warning: Error in as.vector: cannot coerce type 'closure' to vector of type 'list

以下是该模块的代码:

pieTableUI <- function(id, header, titleInfo, width = 6) {

ns <- NS(id)

infoClick <- h3(header,
              tipify(
                el = icon("info-circle"), trigger = "hover click",
                title = titleInfo
              ))

tagList(
tabBox(
  tabPanel("Pie Chart",
           infoClick,
           htmlOutput(ns("piechart"))),
  tabPanel("Table",
           infoClick,
           htmlOutput(ns("table"))),
  width = width
    )
  )
}

pieTable   <- function(input, output, session, dataChart, x, y) {

 output$piechart <- renderGvis({
 gvisPieChart_HCSC(dataChart, x, y)
 })

output$table    <- renderGvis({
gvisTable(dataChart)
})

}

我打电话给模块:

callModule(pieTable, "agegroupplot", dataChart = agegroup_data, x = "AGE_GROUP_CLEAN", y = "n")

其中agegroup_data是来自服务器的反应数据帧。

1 个答案:

答案 0 :(得分:1)

我认为问题是你没有在dataChart函数体内pieTable之后添加括号。要获取反应式表达式的值,必须调用它,类似于函数。

pieTable   <- function(input, output, session, dataChart, x, y) {

  output$piechart <- renderGvis({
      gvisPieChart_HCSC(dataChart(), x, y) 
  })

  output$table    <- renderGvis({
     gvisTable(dataChart())
  })

}