简体   繁体   English

R Shiny 仪表板只加载一次标签

[英]R Shiny dashboard loading tabs only once

I started building my first shiny app but am now struggling with a strange behaviour.我开始构建我的第一个闪亮的应用程序,但现在正在为一种奇怪的行为而苦苦挣扎。 First, when I initially load the app, no tab is selected by default.首先,当我最初加载应用程序时,默认情况下没有选择选项卡。 Second, when clicking on any menu on the sidebar it shows the body only on the first time.其次,当单击侧边栏上的任何菜单时,它仅在第一次显示正文。 When I go from "Overview" to "Pivot-Tabelle" and back, the body is blank.当我从“概览”转到“数据透视表”并返回时,正文是空白的。 What am I missing?我错过了什么? Below is the code I used.下面是我使用的代码。

library(shiny)
library(shinydashboard)

df<-data.frame(a=c(1,2,3,4),
               b=c("A","B","C","D"))

###################Beginn der App################
ui <- dashboardPage(
  # Application title
  dashboardHeader(),

  ##----DashboardSidebar----

  dashboardSidebar(
    menuItem("Overview", tabName = "overview",selected=TRUE),
    menuItem("Pivot-Tabelle", tabName = "pivot"),
    menuItem("Test", tabName = "farmer")
  ),

  ##----DashboardBody----
  dashboardBody(
    tabItems(
      ##----TabItem: Overview----
      tabItem(tabName="overview",
              fluidRow(
                valueBoxOutput("A"),
                valueBoxOutput("B")
              )
      ),
      ###----TabItem:Pivot----
      tabItem(tabName = "pivot",
              ##Pivot
              column(6,offset=4,titlePanel("Daten-Explorer")),
              column(12,
                     mainPanel(
                       rpivotTableOutput("pivot")
                     )
              )
      ),
      ##----TabItem:Test----
      tabItem(tabName = "Test",
              h2("In Progress"))
    )
  )
)

server <- function(input, output) {
  ##----server:overview----
  output$A<-renderValueBox({
    valueBox(
      paste0(25, "%"), "Landwirte in der Datenbank", icon = icon("Person"),
      color = "purple"
    )
  })
  output$B<-renderValueBox({
    valueBox(
      paste0(55, "%"), "Landwirte in der Datenbank", icon = icon("Person"),
      color = "purple"
    )
  })



  ##----server:pivot----
  output$pivot <- renderRpivotTable({
    rpivotTable(data = df)
  })
}

# Run the application
shinyApp(ui = ui, server = server)

This seems to work.这似乎有效。 You need to have sidebarMenu for your menuItem s.您的menuItem需要有sidebarMenu Also, you need to change tabName to farmer so it matches your menuItem .此外,您需要将tabName更改为farmer以使其与您的menuItem匹配。 And I don't think you need mainPanel in there (you can use mainPanel with sidebarPanel as part of a sidebarLayout if you wanted that layout - see layout options ).我不认为你需要mainPanel在那里(你可以使用mainPanelsidebarPanel作为的一部分sidebarLayout如果你想要一个布局-见布局选项)。 See if this works for you.看看这是否适合你。

library(shiny)
library(shinydashboard)
library(rpivotTable)

df<-data.frame(a=c(1,2,3,4),
               b=c("A","B","C","D"))

###################Beginn der App################
ui <- dashboardPage(
  # Application title
  dashboardHeader(),

  ##----DashboardSidebar----

  dashboardSidebar(
    sidebarMenu(
      menuItem("Overview", tabName = "overview",selected=TRUE),
      menuItem("Pivot-Tabelle", tabName = "pivot"),
      menuItem("Test", tabName = "farmer")
    )
  ),

  ##----DashboardBody----
  dashboardBody(
    tabItems(
      ##----TabItem: Overview----
      tabItem(tabName="overview",
              fluidRow(
                valueBoxOutput("A"),
                valueBoxOutput("B")
              )
      ),
      ###----TabItem:Pivot----
      tabItem(tabName = "pivot",
              ##Pivot
              column(6,offset=4,titlePanel("Daten-Explorer")),
              column(12,
                     #mainPanel(
                       rpivotTableOutput("pivot")
                     #)
              )
      ),
      ##----TabItem:Test----
      tabItem(tabName = "farmer",
              h2("In Progress"))
    )
  )
)

server <- function(input, output) {
  ##----server:overview----
  output$A<-renderValueBox({
    valueBox(
      paste0(25, "%"), "Landwirte in der Datenbank", icon = icon("Person"),
      color = "purple"
    )
  })
  output$B<-renderValueBox({
    valueBox(
      paste0(55, "%"), "Landwirte in der Datenbank", icon = icon("Person"),
      color = "purple"
    )
  })
  ##----server:pivot----
  output$pivot <- renderRpivotTable({
    rpivotTable(data = df)
  })
}

# Run the application
shinyApp(ui = ui, server = server)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM