同步打印控制台文本输出

时间:2016-04-02 15:49:57

标签: r shiny

我最近遇到了一个问题,因为我的计算花了很多时间,我想在闪亮的而不是进度条或加载消息上显示文本输出。我的功能看起来像

printText <- function() {
  for(i in 1:10){
    Sys.sleep(0.1)
    print(paste("My text", i))
    y = i + 1
  }
  return(y)
}

我可以用verbatimTextOutput打印它,但我还需要y的返回值。现在我这样做:

runApp(list(
  ui = shinyUI(fluidPage(
    titlePanel("Print consol output"),
    sidebarLayout(
      sidebarPanel(actionButton("go", "Go")),
      mainPanel(
        verbatimTextOutput("text")
      )
    )
  )),
  server = shinyServer(function(input, output, session){
    observeEvent(input$go, {
      output$text <- renderPrint({
          y <- printText()
      })
    })
  })
))

问题在于,如果我想使用返回的y,我需要创建一个reactive对象,这可能会花费我两倍的时间,因为我执行printText()两次,同时打印并传递给{ {1}}对象。

我怎样才能获得y的值并将文本打印成光亮而没有重复的工作?请注意,我不会使用进度条,因为我的实际功能实际上并不是循环。我想要的是在过程中捕获文本输出并获得返回值。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

ui.r

textOutput("id")

server.r

output$id<-renderText(input$y)