【发布时间】:2020-12-15 16:30:52
【问题描述】:
我有闪亮的应用程序包含多个动态/条件输入(下一个输入基于我在前一个中选择的内容)。为此,我使用renderUI。
output$input1_server <- renderUI({
validate(need(base(), "Error"))
df <- base %>%
filter(age >= 10) %>%
select(city)
selectInput(session$ns("input1"), "Input #1:",
choices = df$city,
width = "100%")
})
我还有reactive,它使用输入作为过滤参数,例如:
data <- reactive({
base %>%
#some filters %>%
#some manipulations %>%
#etc
})
然后我使用reactive data() 构建反应图
plot <- reactive({
data() %>%
ggplot( ... ) %>%
geom_bar( ... ) %>%
#etc...
})
# Rendering
output$plot_output <- renderPlot({ plot() })
当我更改动态输入时会出现问题,这会导致其他动态输入发生更改。然后出现renderPlot() 中的错误,尽管有错误,但在几秒钟内会出现图。我确信由于大量的renderUI而发生错误。我尝试使用sys.sleep 为函数执行提供更多时间,但它不起作用。代码是正确的,因为当我在闪亮的应用程序中使用它时它可以工作。
【问题讨论】:
-
请做一个小(最小)示例,包括重现错误的示例数据。
-
请提供minimal reproducible example,即显示此行为的完整闪亮应用程序。否则我不确定你的问题是什么。但是是的,一般来说,很多
renderUI会减慢您的应用速度
标签: r shiny shiny-server shinyapps shiny-reactivity