我有一个简单的UI,我想用查询结果填充selectInput。
ui <- fluidPage(
theme = bs_theme(version = 4, bootswatch = "minty"),
headerPanel("Adverse Event Fuzzy Search Tool"),
fluidRow(
column(3, selectInput("ingredients", label = "Select on or more Active Ingredients:", choices = NULL, multi=TRUE,
selectize = TRUE)),
column(3, textInput("search_term", "AE Search Term:")),
column(3, sliderInput("search_tolerance", label = "Search Tolerance, lower means more accuracy:",
min = 0, max = 0.7, value = 0.2, step = 0.05)),
column(3, actionButton("do_search", "Perform Search"))
)
,fluidRow(
reactableOutput("search_results")
)
)
在我的服务器中,我正在创建调用查询Oracle并返回数据帧的函数的反应器。这些函数起作用,就像我之前在应用程序的根目录中调用这些函数一样。R.
但是我的selectInput没有更新。我原以为反应会在会话开始时初始化。
server <- function(input, output, session) {
# retrieve master data set for session
cases_df <- reactive({
return(get_adverse_events_from_db())
})
ingredients_df <- reactive({
df <- get_list_of_actives_from_db()
message(paste("Length of actives: ", nrow(df)))
updateSelectInput(session,
"ingredients",
label = "Select on or more Active Ingredients:",
choices = df$PRIMARY_SUSPECT_KEY_INGREDIENT,
selected = NULL
)
return(df)
})
}
reactive
s用于返回值,observeEvent
s用于其副作用,如更新UI。尝试:
server <- function(input, output, session) {
# retrieve master data set for session
cases_df <- reactive({
return(get_adverse_events_from_db())
})
ingredients_df <- reactive({
df <- get_list_of_actives_from_db()
message(paste("Length of actives: ", nrow(df)))
return(df)
})
observeEvent(ingredients_df(), {
updateSelectInput(session,
"ingredients",
label = "Select on or more Active Ingredients:",
choices = ingredients_df()$PRIMARY_SUSPECT_KEY_INGREDIENT,
selected = NULL
)
})
}