R 具有不同的选项卡,并且每个选项卡的界面都不同

R 具有不同的选项卡,并且每个选项卡的界面都不同,r,shiny,R,Shiny,我正在尝试创建两个选项卡,对于shiny中的每个选项卡,我希望每个选项卡都有不同的UI 我可以创建两个选项卡,但我面临的问题是,每个选项卡的UI都不是特定的,当我添加第二个选项卡时,第一个选项卡中的UI无法工作。你知道如何解决这些问题吗 代码如下所示: #Library library(shiny) library(shinydashboard) #Run the Source pdf(NULL) #Shiny Header/Sidebar/Body header=dashboardHea

我正在尝试创建两个选项卡,对于shiny中的每个选项卡,我希望每个选项卡都有不同的UI

我可以创建两个选项卡,但我面临的问题是,每个选项卡的UI都不是特定的,当我添加第二个选项卡时,第一个选项卡中的UI无法工作。你知道如何解决这些问题吗

代码如下所示:

#Library
library(shiny)
library(shinydashboard)


#Run the Source
pdf(NULL)

#Shiny Header/Sidebar/Body
header=dashboardHeader(title = "FTA Risk Center")
sidebar=dashboardSidebar(sidebarMenu(id = "sidebarmenu",
                                     menuItem("Risk Dashboard", tabName = "Flow", icon = icon("dashboard")),
                                     menuItem("HKJAP", tabName = "HKJAP", icon = icon("th")),
                                     menuItem("HKKOR", tabName = "HKKOR", icon = icon("th"))
))
body=dashboardBody(
  tabItems(tabItem(tabName = "HKJAP",uiOutput('output1'),
                   fluidRow(column(width = 3,box(title = "Summary of EQ Delta", width = NULL, collapsible = TRUE, solidheader = TRUE,status = "primary",tableOutput("EOD"))),column(width = 3,box(title = "Summary of FX Delta", width = NULL,  collapsible = TRUE, solidheader = TRUE,status = "primary",tableOutput("FX"))),column(width = 3,box(title = "Unmapped Tickers", width = NULL,  collapsible = TRUE, solidheader = TRUE,status = "primary",tableOutput("UnmappedTickers")))),
                   fluidRow(column(width = 8,box(title = "Exposures by Indices", width = NULL, collapsible = TRUE, solidheader = TRUE,status = "primary",plotOutput("Chart1"))))),
           tabItem(tabName = "HKKOR",uiOutput('output2'),
                   fluidRow(column(width = 3,box(title = "Summary of EQ Delta", width = NULL, collapsible = TRUE, solidheader = TRUE,status = "primary",tableOutput("EOD"))),column(width = 3,box(title = "Summary of FX Delta", width = NULL,  collapsible = TRUE, solidheader = TRUE,status = "primary",tableOutput("FX"))),column(width = 3,box(title = "Unmapped Tickers", width = NULL,  collapsible = TRUE, solidheader = TRUE,status = "primary",tableOutput("UnmappedTickers")))),
                   fluidRow(column(width = 8,box(title = "Exposures by Indices", width = NULL, collapsible = TRUE, solidheader = TRUE,status = "primary",plotOutput("Chart2")))))
           )
)
ui <- dashboardPage(header,sidebar,body)

#Shiny Server
server <- function(input, output,session) {

  observeEvent(input$sidebarmenu,{

    if(input$sidebarmenu  == "HKJAP")
    {
      obsJAP <- observeEvent(reactiveTimer(30000)(),{ # Trigger every 30 seconds
        source("HKJAP_Live_monitor_v1.R")
        obsJAP$destroy()
      })
      output$output1 <- renderUI({
        invalidateLater(30000, session)
        h1(paste("Risk Exposures as of ",Sys.time()))
      })
      output$EOD=renderTable({
        invalidateLater(30000, session)
        EQ_delta_summary_Live})
      output$FX=renderTable({
        invalidateLater(30000, session) 
        FX_delta_summary_Live})
      output$UnmappedTickers=renderTable({
        invalidateLater(30000, session) 
        unmapped_tickers})
      output$Chart1=renderPlot({
        invalidateLater(30000, session)  
        plot(NIKKEI$trade_time,cumsum(NIKKEI$EQ_Delta),type='l',xlim=time_scale,ylim=c(-30,30), main=paste("Main Indices"),lwd=2)
        grid(10,10,lty=5)
        lines(TOPIX$trade_time,cumsum(TOPIX$EQ_Delta),type='l',col="red",lwd=3)
        lines(NIKKEI_400$trade_time,cumsum(NIKKEI_400$EQ_Delta),type='l',col="orange",lwd=3)
        lines(MXJ$trade_time,cumsum(MXJ$EQ_Delta),type='l',col="green",lwd=3)
        lines(TSE_MOTHERS$trade_time,cumsum(TSE_MOTHERS$EQ_Delta),type='l',col="blue",lwd=3)
        lines(REITS$trade_time,cumsum(REITS$EQ_Delta),type='l',col="pink",lwd=3)
        legend("topright",c("TOPIX","NIKKEI","NIKKEI 400","MXJ","TSE_M","REITS"),lty = c(1,1),col = c("red","black","orange","green","blue","pink"),,bty = 'n',cex = 0.8)
      })
    }else if(input$sidebarmenu == "HKKOR"){

      obsKOR <- observeEvent(reactiveTimer(30000)(),{ # Trigger every 30 seconds
        source("HKKOR_Live_monitor_v1.R")
        obsKOR$destroy()
      })
      output$output2 <- renderUI({
        invalidateLater(30000, session)
        h1(paste("Risk Exposures as ",Sys.time()))
      })
      output$EOD=renderTable({
        invalidateLater(30000, session)
        EQ_delta_summary_Live})
      output$FX=renderTable({
        invalidateLater(30000, session) 
        FX_delta_summary_Live})
      output$UnmappedTickers=renderTable({
        invalidateLater(30000, session) 
        unmapped_tickers})
      output$Chart2=renderPlot({
        invalidateLater(30000, session)  
        plot(KOSPI_DIV$trade_time,cumsum(KOSPI_DIV$EQ_Delta),type='l',xlim=time_scale,ylim=c(-30,30), main=paste("Main Indices"),lwd=2)
        grid(10,10,lty=5)
        lines(KOSPI$trade_time,cumsum(KOSPI$EQ_Delta),type='l',col="red",lwd=3)
        lines(KOSDAQ$trade_time,cumsum(KOSDAQ$EQ_Delta),type='l',col="orange",lwd=3)
        lines(KRX$trade_time,cumsum(KRX$EQ_Delta),type='l',col="green",lwd=3)
        lines(MSCI_KOR$trade_time,cumsum(MSCI_KOR$EQ_Delta),type='l',col="blue",lwd=3)
        lines(SPX_HKKOR$trade_time,cumsum(SPX_HKKOR$EQ_Delta),type='l',col="pink",lwd=3)
        legend("topright",c("KOSPI_DIV","KOSPI","KOSDAQ","KRX","MSCI_KOR","SPX"),lty = c(1,1),col = c("black","red","orange","green","blue","pink"),,bty = 'n',cex = 0.8)
      })
    }
  }
  )

}

shinyApp(ui, server)
#库
图书馆(闪亮)
图书馆(shinydashboard)
#运行源代码
pdf(空)
#闪亮的标题/侧边栏/主体
页眉=仪表板页眉(title=“FTA风险中心”)
侧边栏=仪表板侧边栏(侧边栏菜单(id=“侧边栏菜单”,
菜单项(“风险仪表板”,tabName=“流量”,icon=图标(“仪表板”),
菜单项(“HKJAP”,tabName=“HKJAP”,icon=icon(“th”),
菜单项(“HKKOR”,tabName=“HKKOR”,icon=icon(“th”))
))
车身=仪表板车身(
tabItems(tabItem(tabName=“HKJAP”,uiOutput('output1'),
fluidRow(列宽度=3,方框宽度=3,方框宽度=NULL,可折叠=TRUE,solidheader=TRUE,status=“primary”,tableOutput(“EOD”))、列宽度=3,方框宽度=NULL,可折叠=TRUE,solidheader=TRUE,status=“primary”,tableOutput(“FX”)、列宽度=3,方框宽度=3,方框宽度=unmap Tickers,width=NULL,collappable=TRUE,solidheader=TRUE,status=“primary”,tableOutput(“unappedtickers”),
fluidRow(列(宽度=8,框(title=“按索引曝光”,宽度=NULL,可折叠=TRUE,solidheader=TRUE,status=“primary”,plotOutput(“图表1”;))),
tabItem(tabName=“HKKOR”,uiOutput('output2'),
fluidRow(列宽度=3,方框宽度=3,方框宽度=NULL,可折叠=TRUE,solidheader=TRUE,status=“primary”,tableOutput(“EOD”))、列宽度=3,方框宽度=NULL,可折叠=TRUE,solidheader=TRUE,status=“primary”,tableOutput(“FX”)、列宽度=3,方框宽度=3,方框宽度=unmap Tickers,width=NULL,collappable=TRUE,solidheader=TRUE,status=“primary”,tableOutput(“unappedtickers”),
fluidRow(列(宽度=8,框(title=“按索引曝光”,宽度=NULL,可折叠=TRUE,solidheader=TRUE,status=“primary”,plotOutput(“图表2”!))))
)
)

ui将很多东西放进你的观察者是不好的做法,你可能有内存泄漏,而观察者的一部分有很多东西,你能指出我的错误吗?如何做得更好?这是
observeEvent(input$sidebarmenu,{
你应该只做轻微的操作,而不尝试渲染其中的任何内容。只要在点击按钮数次后查看一下你的RAM谢谢,有什么更好的方法来做呢?因为我需要一个选项卡,并且希望以不同的方式运行每个选项卡的UI?