R Shiny: Обновление графика при вводе ввода ИЛИ нажатие кнопки действия - PullRequest
0 голосов
/ 19 октября 2018

Я довольно новичок в R Shiny, но я застрял в течение некоторого времени со следующей проблемой и надеюсь, что вы можете оказать некоторую помощь:

  • Я пытаюсь обновить сюжет в RБлестящий, который следует обновить, если введен новый входной аргумент ИЛИ и нажата кнопка действия.Это должно быть просто, но, к сожалению, я не могу решить это, несмотря на поиск в Google / чтение инструкций в течение некоторого времени.Любой совет будет рекомендован.Любые решения в Интернете, кажется, помещают всю функцию renderplot внутри функции наблюдающего события, но мне также нужно дополнительно добавить renderplot вне его, чтобы учесть возможность просто вводить входные данные без нажатия кнопки действия.

  • У меня нет проблем с созданием (рендеринга) графика, который либо обновляется исключительно при вводе нового ввода, либо исключительно при нажатии кнопки.

  • Однако, когда я делаю то же самое одновременно, у меня не получается: я сначала попытался скопировать функцию renderplot, включая полученный результат, дважды, один раз, в функции наблюдаемом событии (чтобы учесть нажатие кнопки действия)и один раз за пределами наблюдаемого события (для учета только обновления входных данных на графике), но это приводит только к затененному графику, который обновляется с задержкой ~ 10 секунд при нажатии кнопки действия.Я представляю себе добавление реактивного ввода клика, сгенерированного от нажатия кнопки действия, непосредственно к графику рендеринга вне события наблюдения, но пока я не смог его запустить.Любые рекомендации будут высоко оценены.

Заранее спасибо.

1 Ответ

0 голосов
/ 19 октября 2018

Как это?:

Редактировать: Нет необходимости передавать selectInput реактивным Vals .. это делает то же самое:

library(shiny)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectInput(inputId="select", label="title", choices=LETTERS[1:3], selected = "A"),
      actionButton(inputId="btn", label="refresh")
    ),
    mainPanel(
      plotOutput("scatterPlot")
    )
  )
)

server <- function(input, output) {

  plotSettings <- reactiveValues()

  observeEvent(c(input$btn, input$select), {
    plotSettings$values <- runif(100,1,100)
    # plotSettings$title <- input$select
  }, ignoreNULL = FALSE)

  output$scatterPlot <- renderPlot({
    plot(plotSettings$values, main=input$select)
  })
}

shinyApp(ui = ui, server = server)
...