Declaración que devuelve la última condición.
He estado haciendo algo de trabajo jugando con R shiny. Soy bastante nuevo en R y esto podría ser un simple error de sintaxis.
El siguiente código pertenece a mi server.r y el renderText (mx ()) parece devolver solo la salida del último if cronológico. (Cuando los intercambio, cambia en consecuencia). El input $numbers es una entrada de texto que cambio a una lista, y el input $mean_type corresponde a un botón de radio que tiene las siguientes opciones:
radioButtons('mean_type', '¿Qué operación?',
c('Media aritmética' = 'A', 'Media geométrica' = 'G', 'Varianza' = 'V'))
Cualquier ayuda sería muy apreciada, ¡gracias!
mx <- reactive({
x <- as.numeric(unlist(strsplit(input$numbers,",")))
if (input$mean_type == 'A') {
mean(x)
}
if (input$mean_type == 'V') {
sd(x)
}
if (input$mean_type == 'G') {
geometric.mean(x)
}
})
output$mean <- renderText(mx())
davy.ai
Parece ser que el problema radica en que estás utilizando múltiples declaraciones
if
en lugar de utilizar una declaraciónif else
. Esto significa que cada declaraciónif
se evalúa de manera independiente a las demás, lo cual lleva a considerar únicamente la última declaraciónif
.Para solucionar este problema, intenta utilizar una declaración
if else
. De esta manera, el código solo ejecutará la primera condición que se evalúe comoVERDADERA
y saltará el resto.Aquí está una versión actualizada de tu código con la declaración
if else
:Esto debería solucionar el problema que estabas experimentando. ¡Espero que te ayude!