私はShinyアプリケーションを開発しており、必要に応じて依存/独立変数を選択し、C5.0を実行してサマリーとツリープロットを生成します。しかし、plot
メソッドでプロットを生成すると、適切なオブジェクトが見つかりませんでした。これは拡張質問のPlotting a dynamic C5.0 decision tree in Shinyです。 plot
方法は、親切にコードを見つけるreactiveValue()
オブジェクトではなく、単純なデータフレームにiris
を変換した後、再度失敗:reactiveValues()でShinyの動的C5.0デシジョンツリーをプロットする
# ui.R
library(shiny)
fluidPage(
titlePanel('Plotting Decision Tree'),
sidebarLayout(
sidebarPanel(
h3('iris data'),
uiOutput('choose_y'),
uiOutput('choose_x'),
actionButton('c50', label = 'Generate C5.0 summary and plot')
),
mainPanel(
verbatimTextOutput('tree_summary'),
plotOutput('tree_plot_c50')
)
)
)
# server.R
library(shiny)
library(C50)
function(input, output) {
output$choose_y <- renderUI({
is_factor <- sapply(iris, FUN = is.factor)
y_choices <- names(iris)[is_factor]
selectInput('choose_y', label = 'Choose Target Variable', choices = y_choices)
})
output$choose_x <- renderUI({
x_choices <- names(iris)[!names(iris) %in% input$choose_y]
checkboxGroupInput('choose_x', label = 'Choose Predictors', choices = x_choices)
})
# tranforming iris to reactiveValues() object
react_vals <- reactiveValues(data = NULL)
react_vals$data <- iris
observeEvent(input$c50, {
form <- paste(isolate(input$choose_y), '~', paste(isolate(input$choose_x), collapse = '+'))
c50_fit <- eval(parse(text = sprintf("C5.0(%s, data = %s)", form, 'react_vals$data')))
output$tree_summary <- renderPrint(summary(c50_fit))
output$tree_plot_c50 <- renderPlot({
plot(c50_fit)
})
})
}
たちは '分離株()' 'でreact_vals $ data'をラップすることができない理由理由はありますか? 'sprintf(" C5.0(%s、data =%s) "、フォーム、 'isolate(react_vals $ data)')'のように。 –
'isolate()'の 'react_vals $ data'をラップしていますか?私は同じエラーメッセージを試してみました。 – tonykuoyj
あなたが正しいです、それは動作しません。考えてみましょう。 'react_vals $ data'にデータフレームを割り当てる動機は何ですか? –