gpt4 book ai didi

r - 分析完成后使标签可见

转载 作者:行者123 更新时间:2023-12-05 05:22:19 25 4
gpt4 key购买 nike

我有一个 Shiny 的应用程序,其中在服务器上执行相对冗长的分析。我想要几个选项卡以允许用户查看和下载分析的输出。这些选项卡应仅在分析完成后可见。

有一个 example here隐藏选项卡直到发生事件(在本例中为单击按钮),但我无法弄清楚如何让事件完成分析。

在下面的最小示例中,我对示例进行了调整 - 单击按钮后选项卡仍然可见。

如何使 tab2"只有在循环完成后才可见?

library(shiny)
library(shinyjs)

ui <- tagList(
useShinyjs(),
navbarPage(
"move/view tabs after analysis",
id = "navbar",
tabPanel(
title = "Start",
actionButton("button", "Run Analysis")
),
tabPanel(
title = "Analysis output",
value = "tab2",
tableOutput("tableOutput")
)
)
)

server <- function(input, output, session) {
observe({
hide(selector = "#navbar li a[data-value=tab2]")
})
observeEvent(input$button, {
output$tableOutput <- renderTable({

withProgress(message = 'Working', {
for(i in 1:5) {
incProgress(1/5)
Sys.sleep(2)
}
})
})
})
observeEvent(input$button, {
toggle(selector = "#navbar li a[data-value=tab2]")
})
}
shinyApp(ui = ui, server = server)

最佳答案

以下是诀窍。这是通过首先在外部而不是在观察语句中正确定义表输出来实现的,但是让它返回 NULL 直到单击按钮。如果单击该按钮,它会执行长时间运行的计算,然后才取消隐藏选项卡。

library(shiny)
library(shinyjs)

ui <- tagList(
useShinyjs(),
navbarPage(
"move/view tabs after analysis",
id = "navbar",
tabPanel(
title = "Start",
actionButton("button", "Run Analysis")
),
tabPanel(
title = "Analysis output",
value = "tab2",
tableOutput("tableOutput")
)
)
)

server <- function(input, output, session) {
observe({
hide(selector = "#navbar li a[data-value=tab2]")
})

output$tableOutput <- renderTable({
if(input$button > 0){
withProgress(message = 'Working', {
for(i in 1:5) {
incProgress(1/5)
Sys.sleep(2)
}
})
toggle(selector = "#navbar li a[data-value=tab2]")
}else{
NULL
}
})
outputOptions(output,"tableOutput", suspendWhenHidden=F)
}
shinyApp(ui = ui, server = server)

关于r - 分析完成后使标签可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40669911/

25 4 0