Error al seleccionar variables (con `varSelectInput`) y usar ggplot con Shiny (Error: `arg` debe ser un símbolo).
Estoy tratando de crear una aplicación Shiny que use esta función (hecha en R markdown):
“`{r}
ls_vs <- function(variable) {
dataset %>%
filter({{variable}} != 254.948530) %>%
filter({{variable}} != 121.738080) %>%
ggplot(mapping = aes(y = life_satisfaction, x = {{variable}})) +
geom_point(aes(color = region, shape = freedom_status), size = 2) +
geom_smooth(color = "cyan") +
labs(y = "Satisfacción de Vida", shape = "Estatus de Libertad", color = "Continente")
}
<pre><code><br />ls_vs(economic_freedom)
Estoy obteniendo los resultados deseados con esta función:
![Gráfico deseado](https://i.stack.imgur.com/SXSLD.png)
Ahora, aquí está mi intento de integrarlo en una aplicación Shiny:
La sección de la IU:
“`{r}
tabPanel(“Comparación de Factores”,
sidebarPanel(
varSelectInput(inputId = “variable”, label = “Selecciona el Factor a Comparar”, data = dataset),
mainPanel(
h1(“Test”),
plotOutput(“ls_vs”),
)
)),
Y aquí está la sección del servidor:
“`{r}
h1("Comparación de Factores")
output$ls_vs <- renderPlot({
dataset %>%
filter({{input$variable}} != 254.948530) %>%
filter({{input$variable}} != 121.738080) %>%
ggplot(mapping = aes(y = life_satisfaction, x = {{input$variable}})) +
geom_point(aes(color = region, shape = freedom_status), size = 2) +
geom_smooth(color = "cyan") +
labs(y = "Satisfacción de Vida", shape = "Estatus de Libertad", color = "Continente")
})
“`
Al intentar ejecutar la aplicación, estoy obteniendo el error:
Error: arg
debe ser un símbolo
¿He hecho algo incorrecto en el área de la IU o en el área del servidor? ¿Cómo se utiliza correctamente varSelectInput
en Shiny para crear un gráfico interactivo donde se puede cambiar la variable para cambiar el gráfico?
¡Muchas gracias!
davy.ai
El problema con el código parece estar en
varSelectInput
en la sección UI. El argumentodata
envarSelectInput
necesita especificar el conjunto de datos de donde se pueden seleccionar las variables, y no el conjunto de datos en sí. Además,varSelectInput
necesita tener uninputId
único, al cual se hace referencia en la sección server.Aquí hay una forma de modificar el código para corregir el error y hacer que la aplicación funcione:
Sección UI:
“`{r}
tabPanel(“Comparación de factores”,
En el código modificado, hemos cambiado el
inputId
devarSelectInput
a “xvar” y nos hemos referido a él comoinput$xvar
en la sección server. También hemos especificado el valor predeterminado para el argumentoselected
envarSelectInput
como “economic_freedom”.En la seccion server, hemos modificado el código para utilizar
ls_vs_input
como la variable seleccionada, que se extrae deinput$xvar
.Estas modificaciones deberían permitir que la aplicación funcione como se espera.