Я нашел этот код от J. Cheng в качестве примера freezeReactiveValue.Однако перед отображением графика иногда на месте отображается ошибка.(Требуется несколько изменений входных данных, чтобы получить это.) Как я понимаю, проблема в том, что в течение короткого периода времени - X и Y (столбцы) остаются для предыдущего набора данных, и не совпадают доновый набор данных.Например, я получаю сообщение об ошибке «Ошибка в FUN: объект« скорость »не найден» в течение секунды после выбора набора данных «давление».(но только если заранее был выбран набор данных "cars" с x = Speed и y = давление.) Очевидно, что график пытается захватить переменную x до того, как она будет обновлена, но я не знаю, как это предотвратить.происходит.Буду признателен за любые советы, которые у вас есть !!!Спасибо!
library(shiny)
library(ggplot2)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
selectInput("dataset", "Dataset", c("cars", "pressure", "mtcars")),
selectInput("x", "x variable", character(0)),
selectInput("y", "y variable", character(0))
),
mainPanel(
plotOutput("plot")
)
)
)
server <- function(input, output, session) {
dataset <- reactive({
get(input$dataset, "package:datasets")
})
observe({
freezeReactiveValue(input, "x")
freezeReactiveValue(input, "y")
columns <- names(dataset())
updateSelectInput(session, "x", choices = columns, selected = columns[[1]])
updateSelectInput(session, "y", choices = columns, selected = columns[[2]])
})
output$plot <- renderPlot({
Sys.sleep(2)
req(input$dataset,input$x,input$y)
ggplot(dataset(), aes_string(input$x, input$y)) + geom_point()
})
}
shinyApp(ui, server)