Я новичок в блестящем, а также в stackoverflow и ищу помощи с проблемой, с которой я сейчас застрял. Я пытаюсь создать блестящее приложение, которое собирает некоторые входные данные от пользователя и создает визуализацию на основе входных данных одним нажатием кнопки. В настоящее время это работает нормально, но один из основных вопросов заключается в том, что когда приложение загружается в первый раз, оно должно иметь визуализацию, подготовленную на основе входных данных по умолчанию.
Я вставляю пример кода, который может объяснить проблему, с которой я столкнулся:
UI.R
#loading shiny
library(shiny)
ui<-shinyUI(fluidPage(
titlePanel("Iris Dataset"),
sidebarLayout(
sidebarPanel(
radioButtons("x", "Select X-axis:",
list("Sepal.Length"='a', "Sepal.Width"='b', "Petal.Length"='c', "Petal.Width"='d')),
radioButtons("y", "Select Y-axis:",
list("Sepal.Length"='e', "Sepal.Width"='f', "Petal.Length"='g', "Petal.Width"='h')),
actionButton("action","Submit")
),
mainPanel(
plotOutput("distPlot")
)
)
))
#SERVER.R
library(shiny)
#loading shiny
server<-shinyServer(function(input, output) {
observeEvent(input$action,{
output$distPlot <- renderPlot({if(input$x=='a'){i<-1}
if(input$x=='b'){i<-2}
if(input$x=='c'){i<-3}
if(input$x=='d'){i<-4}
if(input$y=='e'){j<-1}
if(input$y=='f'){j<-2}
if(input$y=='g'){j<-3}
if(input$y=='h'){j<-4}
s <- iris[, i]
k <- iris[, j]
plot(s,k)
})
})
})
shinyApp(ui<-ui, server<-server)
Теперь, если вы запустите это приложение, вы увидите, что входные данные выбираются на первом экране после загрузки (что по желанию), но визуализация появляется только после нажатия кнопки «Отправить», это из-за события наблюдателя. В реальном приложении расчеты выполняются после ввода входных данных по нажатию кнопки. Следовательно, расчет запускается только при нажатии кнопки actionButton.
Есть ли способ сохранить кнопку "Отправить" и ее событие наблюдения, но автоматически запускать визуализацию или действие, выполняемое в рамках события наблюдения, в начале, то есть при первой загрузке приложения?