У меня есть блестящее приложение с реактивным битом пользовательского интерфейса, который используется для фильтрации моих данных. Затем я использую данные для построения графика. Мой реактивный бит пользовательского интерфейса проверяет все возможные значения переменной, предлагает их как выбор в selectizeInput
и начинается со всех выбранных вариантов. В моих реальных изменениях приложения в фильтре может потребоваться довольно много времени для запуска, поэтому у меня есть submitButton
, чтобы предотвратить постоянное обновление приложения. Единственная проблема заключается в первоначальном запуске приложения: он загружает выбор в динамический интерфейс и выбирает их, но поскольку дальнейшая реактивность блокируется submitButton
, эта информация не доходит до графика и поэтому показывает пустой участок , Все, что необходимо для получения желаемого результата, сразу же попадает в . Как только это будет сделано, приложение будет работать по своему желанию.подавлять эффект submitButton при запуске блестящего приложения
Я ищу способ сделать изначально сюжет, не нажимая submitButton
. В моем следующем примере игрушек это, вероятно, можно было бы сделать довольно легко, заменив submitButton
на actionButton
так, чтобы не вся реакционная способность была заморожена, что, по-видимому, является решением множества проблем, связанных с submitButton
с в другом вопросе. Тем не менее, в моем реальном приложении есть множество входов и источников реактивности, поэтому настройка actionButton
и захват всех желаемых эффектов в observeEvent
s будет довольно утомительным, когда 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)