如何在R Shiny中打印rpart树结果文本

时间:2015-02-05 18:07:30

标签: r shiny rpart

您可以使用以下命令在R控制台中轻松打印出rpart树结果。

fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
print(fit)

打印出来:

  

n = 81

     

node),split,n,loss,yval,(yprob)         *表示终端节点

     

1)根81 17缺席(0.79012346 0.20987654)2)开始&gt; = 8.5 62 6   缺席(0.90322581 0.09677419)
       4)开始&gt; = 14.5 29 0缺席(1.00000000 0.00000000)*        5)开始&lt; 14.5 33 6缺席(0.81818182 0.18181818)
        10)年龄&lt; 55 12 0缺席(1.00000000 0.00000000)*         11)年龄&gt; = 55 21 6缺席(0.71428571 0.28571429)
          22)年龄&gt; = 111 14 2缺席(0.85714286 0.14285714)*           23)年龄&lt; 111 7 3现在(0.42857143 0.57142857)* 3)开始&lt; 8.5 19 8现在(0.42105263 0.57894737)*

但是,这在Rshiny textOutput中不起作用 请参阅以下Rshiny代码:

ui.r

library(shiny)

# Define UI for application that draws a histogram
shinyUI(fluidPage(

  # Application title
    # Show a plot of the generated distribution
    mainPanel(
      plotOutput("distPlot"),
      textOutput("distText")
    )
  )
)

server.r

library(shiny)
library(rpart)
# Define server logic required to draw a histogram
shinyServer(function(input, output) {
  output$distText <- renderText({
    fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
    print(fit)
  })
})

如果我运行上述闪亮的APP,则会出现以下错误:

  

cat(list(...),file,sep,fill,labels,append)出错:
  参数1(类型&#39;列表&#39;)不能由&#39; cat&#39;

处理

1 个答案:

答案 0 :(得分:2)

您可以使用capture.output(fit)来获取print函数输出的字符串。 您可能还想将textOutput中的ui.R更改为htmlOutput。这允许您具有多行文本输出。

代码如下: server.R

library(shiny)
library(rpart)
# Define server logic required to draw a histogram
shinyServer(function(input, output) {

        output$distText <- renderText({
                fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
                paste(capture.output(fit),collapse="<br>")


        })
})

ui.R

library(shiny)

# Define UI for application that draws a histogram
shinyUI(fluidPage(

        # Application title
        # Show a plot of the generated distribution
        mainPanel(
                plotOutput("distPlot"),
                htmlOutput("distText")
        )
)
)