我有一個閃亮的應用程序與反應位的用戶界面,用於過濾我的數據。然後我使用這些數據進行繪圖。我的UI反應位檢查變量的所有可能值,並將它們作爲selectizeInput
中的選項提供,並從所選的所有選項開始。在我的實際應用程序中,過濾器的更改可能需要相當多的時間才能運行,因此我使用submitButton
來防止應用程序不斷更新。唯一的問題是應用程序的初始啓動:它將選擇加載到動態用戶界面並選擇它們,但由於進一步的反應性被submitButton
阻止,所以此信息未達到圖,因此它顯示空圖。只需要一次就可以獲得所需結果。一旦完成這個應用程序按需運作。抑制效果submitButton啓動閃亮的應用程序
我正在尋找一種方法來讓劇情最初顯示,而不必按submitButton
。在我的後續玩具例子中,這可以通過用actionButton
代替submitButton
來很容易地完成,以便並非所有的反應都被凍結,這似乎是在其他問題中涉及到很多涉及submitButton
的問題的解決方案。然而,在我的實際應用程序中有許多輸入和反應性來源,所以配置actionButton
並在observeEvent
中捕獲所有需要的效果時,submitButton
完成所有這些工作時唯一的問題就是啓動時,將會非常繁瑣。有沒有其他的方法可以使劇情在第一次啓動時顯示,但是從那時起遵循submitButton
的行爲?
一個示例應用程序:
library(shiny)
library(ggplot2)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
uiOutput("Cylselectui"),
submitButton("Apply changes")
),
mainPanel(
plotOutput("Carsplot")
)
)
)
server <- function(input, output) {
output$Carsplot <- renderPlot({
plotdata <- subset(mtcars, cyl %in% input$Cylselection) #Filter based on cyl
ggplot(plotdata, aes(x = mpg, y = hp, colour = factor(cyl))) + #Create plot
geom_point()
})
output$Cylselectui <- renderUI({ #Create the cyl selectize ui based on the values of cyl that are in the data
selectizeInput(
'Cylselection', 'Select by Cylinder',
choices = sort(unique(mtcars$cyl)),
selected = sort(unique(mtcars$cyl)),
multiple = TRUE
)
})
}
shinyApp(ui = ui, server = server)