如何解决Shinydashboard:动态创建一个交互式绘图,该绘图无法与其他tabItem的内容一起正确显示
我想集成来自软件包HTSanalyzeR2的交互式图,我首先生成一个sideBarMenu和两个输出对象,输出将以反应方式生成。但是,每当我检查交互式绘图时,第一个tabItem的内容将始终追加,我检查chrome中的HTML,它表明两个tabItem在HTML类中被标记为活动的,但是在Shinyjs包中使用removeClass无效。
library(shiny)
library(shinydashboard)
library(HTSanalyzeR2)
ifNotNull <- function(obj,item) {
if(is.null(obj)) return(NULL)
item
}
## ============================================ Define ui ==================================================
header1 <- dashboardHeader(
title = "My Dynamic Menu"
)
# DYNAMIC UI
sidebar1 <- dashboardSidebar(
sidebarMenu(
menuItem('aa',tabName = 'aa')
),sidebarMenuOutput('bb')
)
#
body1 <- dashboardBody(
tabItems(
tabItem(tabName = 'aa',numericInput('num_input','number',value = 5),actionButton('submit','Submit')),tabItem(tabName = "main",uiOutput('eee')),tabItem(tabName = 'uuu',uiOutput('uuuu'))
) #tabItems
) #dashboardBody
ui <- dashboardPage(header1,sidebar1,body1)
server <- function(input,output,session) {
#===generate result=========
dt<-eventReactive(input$submit,{
results<-readRDS('results.RData')
return(list('a'=input$num_input * 5,'gsca'=results$gsca,'submain'=45,'main'=33))
})
observe({
if(req(input$sidebar2) == 'uuu'){
shinyjs::removeClass(selector ='shiny-tab-aa',class = 'active')
}
})
#=====dynamically generate sideBar==========
observeEvent(input$submit,{
output$bb<-renderMenu({
sidebarMenu(
id='sidebar2',ifNotNull(
dt()$main,menuItem('Main',tabName = 'main')
),ifNotNull(dt()$submain,menuItem('Sub Main',tabName = 'uuu'))
)
})
#=====dynamically generate tabItem content==========
output$eee<-renderUI({
ifNotNull(
dt()$main,tagList(
numericInput('ddd','input value',value = dt()$a),numericInput('ggg','another input',value=dt()$a+5),plotOutput('fff')
)
)
})
output$uuuu<-renderUI({
ifNotNull(
dt()$submain,tagList(
numericInput('dddd',value = dt()$a * 2),numericInput('gggg',value=dt()$a + 20),HTSanalyzeR2:::forceGraphOutput('sub_fff')
)
)
})
})
#======== create result=========
observeEvent({
input$dddd
input$gggg
},{
output$sub_fff<-HTSanalyzeR2:::renderForceGraph({
viewEnrichMap(dt()$gsca,gscs=c('GO_MF'))
})
})
observeEvent({
input$ddd
input$ggg
},{
output$fff<-renderPlot({
plot(1:input$ddd,main=as.character(input$ggg))
})
})
}
## ============================================ Run application ============================================
shinyApp(ui,server)
可以找到示例数据here。谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。