如何在R Shiny中使用capture.output时保留格式

时间:2017-07-04 14:29:49

标签: r shiny

我使用capture.output来捕获打印输出。但是,使用renderPrint显示的结果非常混乱(参见附图1)。有没有办法在保留原始格式的同时显示它(附图2)?

非常感谢任何建议。谢谢!

以下是我的代码中的一些行:

server.R中的

nway_result      <- reactiveValues() 

nway_result$df <- capture.output(Nway(var_dd$selected, mynode$selected), file= NULL)

    output$nway <- renderPrint({
        if (input$dd_options == 6) { 
            nway_result$df
        }
    })
ui.R

verbatimTextOutput('nway')

图片1:

Displayed output (messy)

图片2:

Desired output (neat)

1 个答案:

答案 0 :(得分:0)

以下是我目前正在为我的某个项目使用的一些代码。它显示lm呼叫的输出以及呼叫的回显版本。

library(shiny)
library(evaluate)

shinyApp(
  fluidPage(verbatimTextOutput("text")),
  function(input, output)
    output$text <- renderText(
      paste(
        capture.output(replay(
          evaluate(function()
            lm(mpg ~ cyl, data = mtcars)
          )
        )),
        collapse = "\n")
    )
)

enter image description here

由于您不需要回调调用,因此这个简化版本应该按照您的意愿执行。

# context: server.R
output$nway <- renderText({
    if (input$dd_options == 6) { 
        paste(nway_result$df, collapse = "\n")
    }
})

# context: ui.R
verbatimTextOutput("nway")