Захватывает выбранный вход в R Shiny? - PullRequest
2 голосов
/ 03 апреля 2020

Я пытаюсь захватить URL, который был выбран, когда человек нажимает кнопку «GET URLS» в приложении.

Что должно произойти, так это то, что event reactive() должен посмотреть на input$go_button и увидеть, что он был нажат - он должен затем выполнить выражение, чтобы взять выбранный URL из выбранного входа - к сожалению, он ничего не делает ,

Я пытался отладить браузер (), но все равно не помог.

Все, что я пытаюсь сделать, это захватить URL, который был выбран, когда человек «нажимает» кнопку «GET URLS».

мой пример кода ниже:

library(shiny)

# Use a fluid Bootstrap layout
ui <- fluidPage(    

  # Give the page a title
  titlePanel("testing select"),

  # Generate a row with a sidebar
  sidebarLayout(      

    # Define the sidebar with one input
    sidebarPanel(
      selectInput("url_selection", "select url:", 
                  choices = c(
                    '/multi-task/',
                    "/personal-account",
                    "/paperless"
                  )

                    ), 
      actionButton(inputId = "go_button", label = "Get URLS")
    ),

    # Create a spot for the barplot
    mainPanel(
      textOutput(outputId = "urls_selected_print")
    )

  )
)


server <- function(input, output) {

  url_capture <- reactive({eventReactive(eventExpr = input$go_button,
                               valueExpr = {
                                 message("capturing url chosen in selectize input")

                                 chosen_url <- input$url_selection
                                 browser()
                                 return(chosen_url)


                               })
  })

}




shinyApp(ui, server)

Ответы [ 2 ]

2 голосов
/ 03 апреля 2020

Вы можете использовать observeEvent для захвата события, когда нажата go_button. Вы можете сохранить выбор в reactiveVal, который может отображаться на вашем выходе.

server <- function(input, output) {

  rv <- reactiveVal(NULL)

  observeEvent(input$go_button, {
               message("capturing url chosen in selectize input")
               rv(input$url_selection)
  })

  output$urls_selected_print <- renderText({rv()})

}
1 голос
/ 03 апреля 2020

Небольшая альтернатива ответу Бена (вам просто нужно удалить reactive, потому что eventReactive уже реагирует):


server <- function(input, output) {

  url_capture <- eventReactive(eventExpr = input$go_button,
                                         valueExpr = {
                                           message("capturing url chosen in selectize input")

                                           chosen_url <- input$url_selection
                                           return(chosen_url)


                                         })

  output$urls_selected_print <- renderPrint({
    url_capture()
  })

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...