2017-09-29 1 views
0

別のタブに対して異なるボディが表示されるダッシュボードを作成しようとしています。ただし、以下のコードは動作しません。タブが作成されている間は、タブに何も表示されません。 tabNameを文字列(例:menuItem(name_dataset [1]、tabName = "data1"))に変更すると、右の本文の内容が各タブに表示されます。tabNameは、文字列としてtabNameが変数としてではなくR SHINYに配置されているときに表示されます

これはなぜですか?生の文字列の代わりに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

は、それはこのように動作するはずです。 'name_datasets'の内容は何ですか? – GyD

答えて

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")であっても、サイドバーと本体の両方に表示されるものはより複雑なたくさん: `name_datasets`はベクトル/リストがある場合

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) 
関連する問題