服务器中调用的r-updateSelectInput()没有刷新Shiny中的UI



我有一个简单的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)

})
}

reactives用于返回值,observeEvents用于其副作用,如更新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 
)
})

}

最新更新