【发布时间】:2017-11-22 14:03:43
【问题描述】:
我正在努力应对闪亮模块中的反应性。 我正在尝试根据模块内的选择使用复选框组输入和反应式数据库,但没有成功。 我的代码:
library(shiny)
library(data.table)
country <- c('Argentina', 'United States', 'Peru', 'India', 'United Kingdom', 'Colombia','Others',
'Argentina', 'United States', 'Peru', 'India', 'United Kingdom', 'Colombia','Others')
value1 <- c(1,4,2,5,7,8,9,4,3,2,1,1,4,8)
value2 <- c(6,5,7,9,0,4,3,3,5,6,7,1,2,3)
data <- data.table(country,value1, value2)
# MODULE UI
module_UI <- function(id) {
ns <- NS(id)
fluidRow(
uiOutput(ns('choose_countries')),
verbatimTextOutput(ns("countries")),
verbatimTextOutput(ns("mean"))
)
}
# MODULE Server
module_OUT <- function(input, output, session, df, metric) {
# countries selector
output$choose_countries <- renderUI({
checkboxGroupInput("choose_countries", label = "Choose countries:",
choices = list('Argentina', 'United States', 'Peru', 'India', 'United Kingdom', 'Colombia','Others'),
selected = c('Argentina', 'United States', 'Peru', 'India', 'United Kingdom', 'Colombia', 'Others'), inline = T)
})
output$countries <- renderPrint({ input$choose_countries })
react_df <- reactive({
react_df <- df[country %in% input$choose_countries,]
})
output$mean <- renderPrint({ mean(react_df()$metric)})
}
# App ui
library(shinydashboard)
ui <- fluidPage(
module_UI("test_1")
)
# App server
server <- function(input, output,session){
callModule(module_OUT, "test_1", data, 'value1')
}
shinyApp(ui, server)
未显示所选国家或所选指标的平均值。
我已经在不使用模块的情况下测试了这个简单的代码并且工作正常。
有什么想法吗?提前致谢
【问题讨论】:
-
使用
session$ns("choose_countries")作为渲染UI函数的inputId。 -
使用@greg L 建议的
ns <- session$ns或@Ryan Morton 建议的session$ns("choose_countries")使output$countries工作正常,但对output$mean没有帮助...什么是我真正的问题(模块内的反应性)...