如何在 R Shiny 中以文本形式打印出 rpart 树结果
How to print out a rpart tree result in text in Rshiny
您可以使用以下命令轻松地在 R 控制台中以文本形式打印出 rpart 树结果。
fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
print(fit)
然后打印出来:
n= 81
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 81 17 absent (0.79012346 0.20987654) 2) Start>=8.5 62 6
absent (0.90322581 0.09677419)
4) Start>=14.5 29 0 absent (1.00000000 0.00000000) *
5) Start< 14.5 33 6 absent (0.81818182 0.18181818)
10) Age< 55 12 0 absent (1.00000000 0.00000000) *
11) Age>=55 21 6 absent (0.71428571 0.28571429)
22) Age>=111 14 2 absent (0.85714286 0.14285714) *
23) Age< 111 7 3 present (0.42857143 0.57142857) * 3) Start< 8.5 19 8 present (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,它给出以下错误:
Error in cat(list(...), file, sep, fill, labels, append) :
argument 1 (type 'list') cannot be handled by 'cat'
您可以使用capture.output(fit)
获取打印函数输出的字符串。
您可能还想将 ui.R
中的 textOutput
更改为 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")
)
)
)
您可以使用以下命令轻松地在 R 控制台中以文本形式打印出 rpart 树结果。
fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
print(fit)
然后打印出来:
n= 81
node), split, n, loss, yval, (yprob) * denotes terminal node
1) root 81 17 absent (0.79012346 0.20987654) 2) Start>=8.5 62 6 absent (0.90322581 0.09677419)
4) Start>=14.5 29 0 absent (1.00000000 0.00000000) * 5) Start< 14.5 33 6 absent (0.81818182 0.18181818)
10) Age< 55 12 0 absent (1.00000000 0.00000000) * 11) Age>=55 21 6 absent (0.71428571 0.28571429)
22) Age>=111 14 2 absent (0.85714286 0.14285714) * 23) Age< 111 7 3 present (0.42857143 0.57142857) * 3) Start< 8.5 19 8 present (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,它给出以下错误:
Error in cat(list(...), file, sep, fill, labels, append) :
argument 1 (type 'list') cannot be handled by 'cat'
您可以使用capture.output(fit)
获取打印函数输出的字符串。
您可能还想将 ui.R
中的 textOutput
更改为 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")
)
)
)