Botón genérico para ir a la pestaña siguiente y anterior Elemento brillante

Sé que esto está bastante cerca de las preguntas formuladas anteriormente, pero después de un estudio exhaustivo de esos ejemplos, todavía no he encontrado una solución para mi problema particular.

Tengo una aplicación brillante que usa Shiny Dashboard con esta estructura (* 1). Puedo hacer un botón de página siguiente o anterior de esta manera:

next_btn        <-    actionButton(   inputId ="Next1", 
                                      label = icon("arrow-right"))

con un observador:

  observeEvent(input$Next1, {
    updateTabItems(session, "tabs", "NAME")
  })               

donde NAME es la ID de tabItem. Esta versión es más simple que los ejemplos que he encontrado que usan switch y / o simplemente¿Ir a un elemento del menú de la barra lateral en particular en ShinyDashboard?

Sin embargo, esto solo funciona para cambiar de pagename1 a pagename2 con un botón específico para ello.

Sin embargo, tengo 10-20 tabItems en mi aplicación: ** << - la razón de mi problema **

El enfoque mencionado requeriría que escribiera un botón de acción (next1, ... ac pero next 2, next 3 etc. 1 para cada página, y también un observador separado para cada una.

Lo que estoy tratando de hacer es esto:

1 botón de acción genérico llamado "NEXTPAGE" con un observador que actualiza UpdateTabItems (sesión, pestañas, "página actual +1"

a la página actual +1 de cualquier forma que esté perdido. Podría imaginar hacer un parámetro de lista de todos los nombres de pestaña, encontrar el nombre de pestaña actual en esa lista, tomar su posición, cambiar una posición hacia arriba (anterior) o hacia abajo (siguiente), por ejemplo. Sin embargo, no sé cómo obtener una variable de lista de todos los elementos de tabla presentes en mi aplicación, aparte de algunos tipos de escritura manual muy laboriosos de una lista de cadenas.

* 1 estructura de la aplicación:

library(shiny)
library(shinydashboard)

### create general button here like: 
### write a function that looks at what (nth) tabItem we are, and creates a ###  uiOutput for a next_n button (I can do this myself I think) 

dashboardHeader(title = "FLOW C.A.R.S."),
  dashboardSidebar(
    sidebarMenu(id = "tabs",
                menuItem("Home", tabName = "Home", icon = icon("home")),
                menuItem("My Page", tabName = "MyPage", icon =icon("download")),
                menuItem("Do math", tabName = "Math", icon=icon("folder-open")),
                menuItem("Results of something", tabName="Results", icon= 
 icon("file-text-o")),
              menuItem("Short Manual", tabName = "Manual", icon = icon("book"))
                )
    ),

  dashboardBody(
   tabItems(
    tabItem(tabName = "Home",  class = 'rightAlign',
    actionButton(   inputId ="Next1", label = icon("arrow-right"))),

    tabItem(tabName = "MyPage",  class = 'rightAlign',
    actionButton(   inputId ="Next2", label = icon("arrow-right")),
    actionButton(   inputId ="Previous2", label =  icon("arrow-left"))), 

    tabItem(tabName = "Math",  class = 'rightAlign',
    actionButton(   inputId ="Next3", label = icon("arrow-right")),
    actionButton(   inputId ="Previous3", label =  icon("arrow-left"))), 

    tabItem(tabName = "tabName",  class = 'rightAlign',
    actionButton(   inputId ="Next4", label = icon("arrow-right")),
    actionButton(   inputId ="Previous4", label =  icon("arrow-left"))), 

    tabItem(tabName = "Maual",  class = 'rightAlign',
    actionButton(   inputId ="Previous5", label =  icon("arrow-left")))
    ))


server: 

shinyServer = function(input, output, session) {


  observeEvent(input$Next1, {
    updateTabItems(session, "tabs", "MyPage)
  })

observeEvent(input$Previous2, {
    updateTabItems(session, "tabs", "Home")
  })

observeEvent(input$Next2, {
    updateTabItems(session, "tabs", "Math)
  })

 ### repeat for next2 and previous 2 , 3 etc 

}

Resumen, estoy buscando un código que nos dé el nombre de la pestaña que viene después de la pestaña actual, para que podamos rellenar el resultado de esa consulta en updateTabItems (sesión, "pestañas" ...... .)

para que podamos hacer un observador más general que diga por ejemplo;

si se hace clic en el botón Siguiente [i], vaya a tabItem [i + 1]

pero como dije, me imagino escribiendo un código de este tipo, aunque solo supiera cómo acceder a la lista de elementos de tabulación con función (obviamente tengo los nombres en la página de interfaz de usuario desde que los etiqueté a todos, pero estoy intentando para evitar toda la repetición redundante de código escribiéndolo todo para cada página / botón / observador)

Lo único que descubrí hasta ahora es que pegar (ingresar $ pestañas) dentro de un observador le dará la pestaña actual, pero luego qué ...

gracias por cualquier ayuda!

Si no está claro, no dude en ponerse en contacto conmigo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta