我正在尝试为不同的标签创建一个不同主体的仪表板。但是,以下代码不起作用。创建选项卡时,选项卡中不显示任何内容。如果我将tabName更改为字符串(例如menuItem(name_dataset [1],tabName =" data1")),则右侧正文内容将显示在每个选项卡中。
这是为什么?为什么我不能将变量用于tabName而不仅仅是原始字符串?
#SHINY DASHBOARD: UI
header <- dashboardHeader()
sidebar <- dashboardSidebar(
sidebarMenu(
menuItem(name_datasets[1], tabName = name_datasets[1]),
menuItem(name_datasets[2], tabName = name_datasets[2])
)
)
body <- dashboardBody(
tabItems(
#First tab
tabItem(tabName = name_datasets[1], h2(name_datasets[1])),
#Second tab
tabItem(tabName = name_datasets[2], h2(name_datasets[2]))
)
)
ui <- dashboardPage(header, sidebar, body)
答案 0 :(得分:1)
我敢打赌,你的name_datasets
向量包含带空格或其他保留字符的字符串。 tabName
参数(无论是否直接提供)应该是一个简单而唯一的密钥,因此它不应包含空格,&符号,百分比等...
您可以在没有“怪异”字符的情况下验证此作品:
library(shiny)
library(shinydashboard)
name_datasets <- c(a = "letter_a1", b = "letter_b2")
sidebar <- dashboardSidebar(
sidebarMenu(id = "tabs",
menuItem(name_datasets[1], tabName = name_datasets[1]),
menuItem(name_datasets[2], tabName = name_datasets[2])
)
)
body <- dashboardBody(
tabItems(
tabItem(tabName = name_datasets[1], h2(name_datasets[1])),
tabItem(tabName = name_datasets[2], h2(name_datasets[2]))
)
)
ui <- dashboardPage(dashboardHeader(), sidebar, body)
server <- function(input, output, session) {}
shinyApp(ui, server)
但是,如果您确实希望向最终用户显示空格或美元符号或“奇怪”的东西,您仍然可以这样做(因为tabName
仅在内部使用)。例如,这是与最后一个应用程序非常相似的应用程序,但您会注意到即使tabName
非常简单("a"
和"b"
),显示的内容也是如此侧边栏和主体中的用户要复杂得多:
library(shiny)
library(shinydashboard)
name_datasets <- c(a = "letter $ % a1", b = "letter b2 % $")
sidebar <- dashboardSidebar(
sidebarMenu(id = "tabs",
menuItem(name_datasets[1], tabName = names(name_datasets)[1]),
menuItem(name_datasets[2], tabName = names(name_datasets)[2])
)
)
body <- dashboardBody(
tabItems(
tabItem(tabName = names(name_datasets)[1], h2(name_datasets[1])),
tabItem(tabName = names(name_datasets)[2], h2(name_datasets[2]))
)
)
ui <- dashboardPage(dashboardHeader(), sidebar, body)
server <- function(input, output, session) {}
shinyApp(ui, server)