У меня есть navbarMenu с набором tabPanels, который отлично работает (код 1 ниже), но я хочу сделать эту динамику, чтобы я мог добавлять или удалять tabPanels на основе состояния при запуске , Что-то вроде того, что у меня есть в блоке 2 ниже (но это не работает). Я вижу пару ссылок, где люди говорят, что это невозможно, но кажется, что должен быть способ. На самом деле мне нужно включить или не включать tabPanels при запуске и не нуждаться в том, чтобы он был действительно динамичным.Dynamic navbarMenu tabPanels in R Shiny
Я вижу пример, близкий к tabsetPanel: R Shiny - add tabPanel to tabsetPanel dynamically (with the use of renderUI). И вот он говорит, что это невозможно: reactive tabPanel in a navbarMenu in Shiny
Блок 1: работает, но не динамический
library(shiny)
runApp(list(
ui = navbarPage(
tabPanel("a"
),
tabPanel("b"),
navbarMenu('g',
tabPanel("c"),
tabPanel("d")
)
),
server = function(input, output, session){
}
))
Блок 2: Я хочу что-то вроде этого - это не работает
library(shiny)
runApp(list(
ui = navbarPage(
tabPanel("a"
),
tabPanel("b"),
navbarMenu('g',
uiOutput('tabs')
)
),
server = function(input, output, session){
output$tabs <- renderUI({
listoftabs <- c("c", "d")
lapply(listoftabs, tabPanel)
})
}
))
reactive tabPanel in a navbarMenu in Shiny
Вам нужно поместить 'narbarMenu' внутри' renderUI'. Вы не можете просто добавить 'tabPanel' в существующую' navbarMenu' или 'tabsetPanel' (пример, который работает, имеет' tabsetPanel' внутри 'renderUI'). –
Вы проверили это? Я тестировал много разных вариантов этого, и никто, похоже, не работает. Действительно ли navbarMenu работает из renderUI? – ZRoss
Жаль, что 'navbarMenu' не работает. Причина в том, что 'navbarMenu' является частью' navbarPage'. Когда вы помещаете 'navbarMenu' в' navbarPage', он генерирует два элемента HTML: один для ссылки меню, другой для фактической панели 'div'. Когда вы используете его с 'renderUI', вы получаете панель' div'. Если вам нужна динамика, вам придется перерисовать весь «navbarPage» –