将print(data.tree)的输出渲染为有光泽的UI

问题描述 投票:3回答:1

我在控制台中输出data.tree包如下:

print(acme, "cost", "p")

#Out of Data.tree print JPEG

enter image description here

我想在闪亮的UI中呈现相同的输出结构。

我试过粘贴(console.output(print(acme,“cost”,“p”)),collapse =“ “),但输出结构不一样。

ui <- fluidPage(
          sliderInput(inputId = "slider", 
          label = "My number", 
          min = 300, 
          max = 19000,
          value = 5000),
          htmlOutput("mytext")
                   )

server <- function(input, output) {
          output$mytext <- renderText({
          paste(capture.output(print(acme, "cost", "p")),collapse = "<br/>")
       })
       }

shinyApp(ui = ui, server = server)

请建议我任何渲染功能,它将在Shiny UI中完全像上面那样打印输出。

r shiny
1个回答
1
投票

TL:DR;用服务器中的renderText()替换renderPrint(),用ui中的htmlOutput()替换verbatimTextOutput()

问题在于renderText()的工作原理。它将所有文本输入与cat()连接起来,当使用对象data.tree对象时,这将失败。您应该使用renderPrint()来捕获print语句的输出。不需要capture.output()renderPrint()不适用于各种输出方法,最安全的方法是使用verbatimTextOutput()。我的建议来自实验,而不是实际的文档研究。 htmlOutput可能会工作,但我不确定。

更新的代码:

ui <- fluidPage(
          sliderInput(inputId = "slider", 
          label = "My number", 
          min = 300, 
          max = 19000,
          value = 5000),
          verbatimTextOutput("mytext")
                   )

server <- function(input, output) {
          output$mytext <- renderPrint({
          print(acme, "cost", "p"))
       })
       }

shinyApp(ui = ui, server = server)
© www.soinside.com 2019 - 2024. All rights reserved.