Parece que no puedo recuperar el valor de salida seleccionado de mi acción selectInput. Las listas de las opciones de vectores y seleccionados se insertan adecuadamente en la interfaz de usuario, pero el valor de la variable input$Site_User_Override es siempre NULL.

output$Site_Pick_User = renderUI({
    choices=as.list(Subset_List()$to_Select)
    selected = Site_Pick_Initial()
    selectInput("Site_User_Override", "Override Site_Pick:", choices=choices,
        selected=selected, multiple = FALSE, selectize = TRUE, width = NULL, size = NULL)
    })

Mi vector de una sola fila Site_Pick_Initial()="Name5_1.9mi_S" Y la estructura de Subset_List() es el encabezado y cinco filas debajo.

Name    STATE   lat lon Air_Miles   Bearing Rose    Rank    to_Select   Delta_Dir
Name1   NJ  42.3    -74 8.826   12.092  NNE 33  Name1_8.8mi_NNE 175.89
Name2   NJ  42.2    -74 2.690   14.615  NNE 27  Name2_2.7mi_NNE 173.37
Name3   NJ  42.3    -74 9.049   348.271 NNW 34  Name3_9.0mi_NNW 160.29
Name4   NJ  42.2    -74 3.962   329.387 NNW 28  Name4_4.0mi_NNW 141.40
Name5   NJ  42.2    -74 1.868   187.983 S   21  Name5_1.9mi_S   0.00

¿Cómo puedo recuperar el valor de input$Site_User_Override? El código anterior está simplificado; Necesito usar input$Site_User_Override en los últimos cálculos y pantallas.

0
SteveMW 17 feb. 2018 a las 02:20

2 respuestas

La mejor respuesta

Según su pregunta, el siguiente código debería ser equivalente pero funciona totalmente bien. Actualice si lo que está intentando hacer es diferente.

library(shiny)

ui <- fluidPage(
  uiOutput("test"),
  verbatimTextOutput("debug")
)

data <- data.frame(
  Name = c("n1", "n2", "n3"), 
  to_Select = c("Name1_8.8mi_NNE", "Name4_4.0mi_NNW", "Name5_1.9mi_S"),
  stringsAsFactors = FALSE
)

server <- function(input, output, session) {
  output$test <- renderUI({
    selectInput(
      "Site_User_Override",
      "Override Site_Pick:",
      choices = data$to_Select,
      selected = "Name5_1.9mi_S"
    )
  })

  # input$Site_User_Override is updated and can be used elsewhere
  output$debug <- renderPrint({
    input$Site_User_Override
  })

}

shinyApp(ui, server)
0
Keqiang Li 1 mar. 2018 a las 03:49

Gracias, Harlan. https://stackoverflow.com/users/4629916/harlan-nelson Me diste la pista que necesitaba. La "salsa secreta" estaba usando AMBOS selectInput () en el lado de la interfaz de usuario

            selectInput(
                inputId = "Site1_Override",
                label = "Override Site_Pick:",
                choices = "",
                selected = ""
                )

Y updateSelectInput () en el lado del servidor, con un observeEvent ()

    observeEvent(
        input$checkGroup, {
        updateSelectInput(session,
            inputId = "Site1_Override",
            label = "Override Site_Pick:",
            choices = as.list(Subset_List()$to_Select),
            selected = Site_Pick_Initial()
            )
        })

Vi una pista adicional sobre la solución en un video de YouTube https://www.youtube.com/ watch? v = tXh01HFyH68 donde vi por primera vez TANTO la interfaz de usuario como las ediciones del servidor.

Ahora puedo generar con éxito el elemento seleccionado,

    output$result_item  <- renderPrint({
        input$Site1_Override
        })

Y

    output$result <- DT::renderDataTable( 
        Subset_List()[Subset_List()$to_Select  %in% input$Site1_Override,]
        )
0
SteveMW 21 feb. 2018 a las 22:07