Приложение Shiny, как подавить функцию и рендеринг при запуске?

Я разработал приложение Shiny с помощью RStudio, которое принимает входные данные, выполняет поиск в справочной таблице, а затем возвращает значение. Поиск не должен выполняться, пока пользователь не нажмет кнопку отправки. Однако при запуске приложение автоматически выполняет и возвращает первый набор значений из таблицы поиска. После этого начального поиска приложение работает точно так, как ожидалось. Можно ли подавить этот первоначальный поиск (или иметь значение по умолчанию) и выполнять поиск ТОЛЬКО при нажатии кнопки отправки? Я не могу представить воспроизводимый код, но вот структура моего ввода (server.R) и моего кода пользовательского интерфейса (ui.R):

#server.R snippet
output$Word <- renderText({
    predictWord <- input$gram
    predict.function(predictWord)   #User-defined function in global.r file
    })


#ui.R snippet

tabPanel("Word Prediction",
     sidebarPanel(
     textInput("gram", "Enter up to three words"),
     submitButton("Predict")),

mainPanel(
    h4("Word Prediction"),
    textOutput("predictWord")))

person Brian P    schedule 10.10.2014    source источник


Ответы (1)


Один из способов — заменить actionButton на submitButton и обернуть любой компонент оператором if. Вот простой пример отображения числа, слегка измененного из галереи виджетов Shiny. .

require(shiny)
runApp(list(
  ui = pageWithSidebar(
    headerPanel("actionButton test"),
    sidebarPanel(
      numericInput("n", "N:", min = 0, max = 100, value = 50),
      br(),
      actionButton("goButton", "Go!"),
      p("Click the button to update the value displayed in the main panel.")
    ),
    mainPanel(
      verbatimTextOutput("nText")
    )
  ),
  server = function(input, output){
    output$nText <- renderText({
      # Take a dependency on input$goButton
      if(input$goButton >= 1){

        # Use isolate() to avoid dependency on input$n
        isolate(input$n)
      }
    })
  }
  )
  )
person cdeterman    schedule 10.10.2014