tutorial Cómo usar el mismo enlace de salida en diferentes paneles de pestaña en brillante



shinydashboard cheat sheet (1)

En mi archivo server.R , tengo un reactivo llamado myNet que genera una visNetwork . En mi ui.R , tengo varios paneles de pestañas que idealmente tendrán diferentes widgets de entrada que afectan a la visNetwork .

¿Es posible reutilizar el mismo enlace?

Actualmente, cuando trato de ejecutar el código similar a la siguiente, recibo un error: Uncaught Duplicate binding for ID vis .

server.R de server.R

  myNet <- reactive({
    nodes <- df_nodes
    edges <- df_edges        
    visNetwork(nodes, edges, height = '800px')
  })

  output$vis <- renderVisNetwork(
    myNet()
  )

ui.R de ui.R

  ...

  tabPanel("First Panel",
    sidebarLayout(
      sidebarPanel(
        sliderInput("input1", "Title 1", 
                    min=1, max=10, value=1),
        sliderInput("input2", "Title 2",
                    min=1, max=10, value=1),
        sliderInput("input3", "Title 3",
                    min=1, max=10, value=1)
      ),
      mainPanel(
        visNetworkOutput("vis", height = '800px') # *** ISSUE HERE***
      )
    )
  ),
  tabPanel("Second Panel",
    sidebarLayout(
      sidebarPanel(
        sliderInput("input4", "Title 4", 
                    min=1, max=10, value=1),
        sliderInput("input5", "Title 5",
                    min=1, max=10, value=1),
      ),
      mainPanel(
        visNetworkOutput("vis", height = '800px') # *** ISSUE HERE***       
      )
    )
  ), ...

Terminé abriendo este problema de GitHub . El consenso parece ser que el siguiente es el mejor método:

output$vis_1 <- output$vis_2 <- renderVisNetwork(myNet())

Alternativamente, como se alude en los comentarios, podría usar un enfoque no muy SECO:

output$vis_1 <- renderVisNetwork(myNet())
output$vis_2 <- renderVisNetwork(myNet())

Joe Cheng hizo apropiadamente el siguiente comentario sobre el problema de GitHub:

"Permitir que varias salidas compartan la misma ID tendría muchos efectos secundarios, me duele incluso pensar en lo que significaría. Por ejemplo, dos mapas de Leaflet con la misma identificación, pero ambos tienen muchos indicar en el navegador, y comunicar ese estado de vuelta al cliente. ¿Cómo se puede tener sentido cuando comparten la misma identificación?

Todo dicho y dicho, pude lograr el mismo comportamiento utilizando el enfoque de IU dinámico con un interruptor que alterna qué controles se muestran al usuario a través de uiOutput() (en el archivo ui.R ) y output$ui <- renderUI({...}) (en el archivo server.R ).





shiny