У меня есть скрипт, который я хочу добавить в свое приложение Shiny, и оригинальный скрипт можно упростить до следующего:
plot(c(1:3),c(2,4,6), main ="This is first plot I want displayed")
a <- menu(c(1:5), title="what would you like to change the first point to?")
plot(c(1:3),c(a,4,6), main ="This is second plot I want displayed")
b <- menu(c(1:5), title="what would you like to change the second point to?")
plot(c(1:3),c(a,b,6), main ="This is second plot I want displayed")
Приведенный выше скрипт строит первый график, затем ждет ввода пользователяперед построением второго, и снова ждет пользовательского ввода перед построением третьего.
Однако, когда я пытаюсь преобразовать его в блестящее приложение, как показано ниже, он никогда не обновляет первый или второй график, и вещи, которые я 'я пытался остановить его для пользовательского ввода, где показанное не сработало.
Я пытался использовать req (), но, похоже, он полностью останавливает сценарий, так что последние вещи вообще не запускаются, и вы должныначать весь сценарий заново.
Итак, как мне сделать так, чтобы он отображал все графики последовательно, и как я могу остановить выполнение сценария и дождаться ввода, прежде чем продолжить?
if(interactive()){
ui <- fluidPage(
actionButton("button","Click me"),
selectInput("input", "Input", c(1:10)),
textOutput("text"),
plotOutput("plot")
)
server <- function(input, output) {
a<-1
observeEvent(input$button, {
output$plot <- renderPlot(plot(c(1:3),c(2,4,6), main ="This is first plot I want displayed"))
output$text <- renderText("Please select a number to multiply the first point with")
#This is where I want the script to wait for user input
output$plot <- renderPlot(plot(c((1),(2),(3)),c((input$input),(a),(3)), main="This is plot the second plot"))
a<-a+1
#Here I want the script to wait for user input again
output$plot <- renderPlot(plot(c((1),(2),(3)),c((input$input),(a),(3)), main="This is plot the third plot"))
})
}
shinyApp(ui=ui, server=server)
}
цель состоит в том, чтобы он обновлял графики, когда они отображаются в коде, и чтобы он ожидал ввода данных пользователем, пока сценарий не продолжится, вместо того, чтобы просто продолжать работу.