Seleccionar una columna específica en R Shiny basada en selectInput.
Tengo un problema con seleccionar una columna específica dependiendo de selectInput. Intento crear una matriz de confusión. Tengo el argumento (data = result) pero ahora necesito reference = ?, que es una columna específica de data t add. Esa columna (que tiene que ser reference) debe ser input$choose y de data t add. ¿Cómo puedo hacerlo? Gracias.
Servidor:
output$choose_y <- renderUI({
<pre><code> y_choices <- names(data())
selectInput('choose_y', label = 'Seleccione la Variable Objetivo', choices = y_choices)
</code></pre>
})
output$choose<em>x <- renderUI({
x_choices <- names(data())[!names(data()) %in% input$choose</em>y]
checkboxGroupInput('choose<em>x', label = 'Seleccione los Predictores', choices = x_choices)
})</em>
observeEvent(input$c50, {
form <- paste(isolate(input$choosey), '~', paste(isolate(input$choosex), collapse = '+'))
c50<em>fit <- eval(parse(text = sprintf("ctree(%s, data = data())", form)))
output$tree</em>summary <- renderPrint(summary(c50<em>fit))
output$tree</em>plot<c50> <- renderPlot({
plot(c50fit)
})</c50>
<pre><code> result <- predict(c50_fit, newdata = data_t())
data_t_add = cbind(data_t(), result)
output$data_t_add_out <- renderTable({
return(head(data_t_add))
})
tbl = confusionMatrix(result, REFERENCE, mode = "prec_recall")
output$conf_matrix <- renderPrint({ tbl })
</code></pre>
})
<h6>############### EDITAR del SERVIDOR</h6>
try = data<em>t</em>add %>% select(input$choosey)
<pre><code> output$tripple <- renderPrint({
return(str(try))
})
output$tripples <- renderPrint({
return(str(data_t_add))
})
tbl = confusionMatrix(result, try, mode = "prec_recall")
output$conf_matrix <- renderPrint({ tbl })
</code></pre>
davy.ai
Para elegir una columna específica en
data_t_add
basada en la entrada del usuario, puedes crear una expresión reactiva que filtre el dataframedata_t_add
por la columna de entrada seleccionada.Aquí tienes un ejemplo de fragmento de código para la función del servidor:
“`{r}
Expresión reactiva para subconjuntar data_t_add basado en la entrada de choose_y
selected_col <- reactive({
req(input$choose_y) # asegurarse de que choose_y no sea NULL
data_t_add[[input$choose_y]]
})
Utilizar selected_col como referencia en la función confusionMatrix
tbl <- confusionMatrix(result, selected_col(), mode = “prec_recall”)
output$conf_matrix <- renderPrint({ tbl })
“`
Explicación:
Utilizamos la función
reactive
para crear una expresión reactiva llamadaselected_col
. Esta expresión filtra el dataframedata_t_add
por la columna de entrada seleccionada utilizando el operador[[
.Utilizamos la función
req
para asegurarnos de queinput$choose_y
no sea NULL.En la función
confusionMatrix
, utilizamosselected_col()
como columna de referencia en lugar deREFERENCE
. La parte()
al final de la expresión reactiva se utiliza para llamar a la expresión reactiva como una función y obtener su valor.Aquí, no necesitamos crear una variable
try
porqueselected_col()
ya nos da la columna seleccionada como un vector.Por último, utilizamos la función
renderPrint
para mostrar la matriz de confusión en la salida.