【发布时间】:2019-12-22 07:37:31
【问题描述】:
我有一个非常简单的测试脚本 (Test.R) 保存在共享驱动器 (K:\\Market Risk\\R\\Scripts\\) 中,我想从 Shiny 应用程序调用它。
rm(list=ls())
Sys.sleep(5)
在我的应用程序中,我编写了一个函数来调用脚本并向应用程序用户显示该函数是否正在运行;它自己按预期运行。
run_test <- function() {
print("Running...")
source("K:\\Market Risk\\R\\Scripts\\Test.R", local = T)
print("Complete")
}
但是,当部署在我的应用上时,文本输出仅在完成运行后才显示“完成”,并且“正在运行...”仅显示在我的控制台中,而不是应用中。
library(shiny)
run_test <- function() {
print("Running...")
source("K:\\Market Risk\\R\\Scripts\\Test.R", local = T)
print("Complete")
}
ui <- fluidPage(
tabsetPanel(
tabPanel("Reporting",
br(),
verticalLayout(
fluidRow(strong("Test"),
actionButton("Run_Test", "Run"),
textOutput("text")
)
)
)
)
)
server <- function(input, output) {
observeEvent(input$Run_Test, {
output$text <- renderText(run_test())
})
}
shinyApp(ui = ui, server = server)
以前有人经历过吗?
【问题讨论】:
-
print's docs 开头是:"打印其参数并不可见"返回它。所以你看到的是从函数返回的那个。print永远不会在 HTML 对象中添加一些东西。有一些技术使用withCallingHandlers和message来收集通话中的 消息 并在闪亮的界面中使用它们,但它们并非微不足道(而且我没有方便的链接)。 -
@r2evans 感谢您提供的信息,我会尝试使用
withCallingHandlers和message并报告回来。 -
@r2evans 谢谢!从该链接中,我可以在这里找到完全符合我需要的代码:github.com/daattali/advanced-shiny/blob/master/…