【发布时间】:2018-01-05 00:52:56
【问题描述】:
我想在处理代码之前先打印一个文本,然后在代码执行后打印一个确认。
这是我的代码(app.R 的 UI 和服务器): 所有未指定的变量都在 app.R 文件中启动。
ui <- fluidPage(
# Application title
titlePanel(h1("Order2Ship", align="center")),
# Sidebar iputs
sidebarLayout(
sidebarPanel( #LONG LIST OF INPUTS
),
# On Screen output
mainPanel(
textOutput("START"),
textOutput("Confirm")
)
)
)
# Underlining code for output (computes the whole each time an input is changed)
server <- function(input, output) {
observeEvent(input$Do, { # ignores all return values
output$START <- renderText({"Starting Analysis"})
O2S( #LONG LIST OF PARAMETERS, FROM INPUTS
)
output$Confirm <- renderText({"Analysis Done"})
})
}
# Run the application
shinyApp(ui = ui, server = server)
我不需要函数O2S 的任何返回,它基本上将一个文件作为输入并生成一个解决方案文件。但是,在函数运行后,两个文本输出同时显示。我想不明白。我刚开始接触 Shiny,很抱歉提出这么幼稚的问题。
【问题讨论】:
-
那是因为启动和确认的
renderText只有在函数运行后才从服务器传递到ui。 -
我明白,但我该如何解决?
-
也许我遗漏了一些东西,但我在运行您的应用程序时看到的只是 Order2Ship。没有别的...
-
如果在
observeEvent函数之前使用第一个renderText会怎样?这样做将按以下顺序运行您的代码:在mainPanel中显示Starting Analysis文本;运行代码输入文件并生成解决方案文件;最后显示Analysis Done。 -
@mlavoie 所需的数据和一些代码被省略以使其简短。创建一个O2S函数,以及一个do的动作按钮,你可以复制行为。