【发布时间】:2020-01-29 12:34:46
【问题描述】:
我正在尝试将 esquisse 集成到应用程序中。目前我有一个允许用户过滤一些数据的应用程序,我想将这些数据传递给 esquisse。 Esquisse 将 reactiveValues 作为输入,通常使用 observeEvent 进行更新。但是,当许多不同的过滤器发生更改时,我不确定如何在此处使用 observeEvent 作为数据更新。有没有办法在每次数据更改时更新值?
示例应用:
library(shiny)
library(esquisse)
ui <- fluidPage(
titlePanel("Use esquisse as a Shiny module"),
mainPanel(
tabsetPanel(
tabPanel(
mainPanel(
selectInput(
inputId = "am",
label = "am:",
choices = c(0,1)
),
selectInput(
inputId = "gear",
label = "gear:",
choices = c(3,4,5)
),
selectInput(
inputId = "carb",
label = "carb:",
choices = c(1,2,3,4,6,8)
)
)),
tabPanel(
title = "esquisse",
esquisserUI(
id = "esquisse",
header = FALSE, # dont display gadget title
choose_data = FALSE # dont display button to change data
)
)
)
)
)
server <- function(input, output, session) {
data_r <- reactiveValues(data = data.frame(), name = "empty")
data <- reactive({
mtcars %>%
filter(am == input$am,
gear == input$gear,
carb == input$carb
)
})
data_r$data <- reactive({data()}) ### this doesn't work, so need something similar to this
callModule(
module = esquisserServer,
id = "esquisse",
data = data_r)
}
shinyApp(ui, server)
【问题讨论】:
标签: r shiny shiny-reactivity