【发布时间】:2017-06-28 05:22:38
【问题描述】:
我有一个选项卡式 UI,每当用户选择数据表中的行时就会显示(在下面的代码中,输出是随机的,在现实生活中计算非常复杂)。
我想将显示的选项卡式 UI 设置为单击按钮。目前,每次您选择额外的行时,它都会对已选择的行重新进行计算。当用户完成选择他想要查看的所有行时,我想将其限制为一次性计算。
library(shiny)
library(DT)
用户界面:表格、操作按钮和选项卡部分。
ui <- fluidPage(
mainPanel(
fluidRow(
column(12,DT::dataTableOutput(outputId = 'tableCurrencies'))
),
actionButton(inputId = 'showSelectedButton',label = 'Show Selec'),
fluidRow(
uiOutput("myTabUI")
)
)
)
server 函数:如果我删除 output$myTabUI <- eventReactive(input$launchCalcButton, { 部分,而是直接执行 output$myTabUI <- renderUI ({ ...,它会按预期工作(当然减去点击按钮后的计算)。
server <- function(input,output){
output$tableCurrencies <- DT::renderDataTable({datatable(data.frame(a=rnorm(10),b=rnorm(10),c=rnorm(10)))})
origTable_selected <- reactive({
ids <- input$tableCurrencies_rows_selected
return(ids)
})
output$myTabUI <- eventReactive(input$launchCalcButton, {
selectedTabs <- renderUI({
myTabs <- lapply(origTable_selected(),function(i) {
tabName <- paste0("test",i)
a <- renderPlot({
hist(rnorm(50))
})
output[[paste0(tabName,"rates")]] <- a
return(tabPanel(
tabName,
fluidRow(
column(6,plotOutput(paste0(tabName,"rates")))
)
))
})
return(do.call(tabsetPanel,myTabs))
})
selectedTabs
})
}
app = shinyApp(ui,server)
runApp(app,port=3250,host='0.0.0.0')
不知道如何解决这个问题。欢迎任何帮助。
【问题讨论】:
-
请不要发布具有非本机端口/主机配置的应用程序。这会分散实际问题的注意力,并且可能会弄乱防火墙设置(就像对我一样)
-
注明。感谢您的提醒
标签: r tabs reactive-programming shiny