我最近遇到了一个问题,因为我的计算花了很多时间,我想在闪亮的而不是进度条或加载消息上显示文本输出。我的功能看起来像
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的值并将文本打印成光亮而没有重复的工作?请注意,我不会使用进度条,因为我的实际功能实际上并不是循环。我想要的是在过程中捕获文本输出并获得返回值。
答案 0 :(得分:0)
你可以这样做:
ui.r
textOutput("id")
server.r
output$id<-renderText(input$y)