training studio publicar learning instalar examples ejemplos como code apps app r shiny r-faq

publicar - shiny r studio examples



¿Cómo convertir una aplicación Shiny que consiste en múltiples archivos en un ejemplo Shiny fácilmente compartible y reproducible? (1)

Hay recursos sobre cómo crear un ejemplo Mínimo, Completo y Verificable en general sobre Desbordamiento de Pila, y sobre cómo hacer un gran ejemplo reproducible de R. Sin embargo, no hay pautas similares para las preguntas shiny , mientras que el cumplimiento de ciertos estándares hace que sea mucho más probable que se den respuestas de calidad y, por lo tanto, que su pregunta se resuelva.

Sin embargo, hacer una buena pregunta brillante puede ser difícil. shiny aplicaciones shiny menudo son grandes y complejas, utilizan múltiples fuentes de datos, y el código a menudo se divide en varios archivos, lo que dificulta compartir código fácilmente reproducible con otros. Aunque un problema puede ser causado en el server.R , el ejemplo no es reproducible sin el contenido de ui.R (y posiblemente otros archivos como las hojas de estilo o global.R ). Copiar y pegar el contenido de todos estos archivos individualmente es engorroso y requiere que otros usuarios vuelvan a crear la misma estructura de archivos para poder reproducir el problema.

Asi que; ¿Cómo convertir tu aplicación shiny en un buen ejemplo reproducible?


Ejemplo de datos

Por supuesto, todas las pautas con respecto a los datos de muestra que se mencionan en la respuesta a la pregunta "cómo hacer un gran ejemplo reproducible de R" también se aplican cuando se crean preguntas relacionadas con Shiny . Para resumir: asegúrese de que no se necesitan archivos adicionales para ejecutar su código. Use conjuntos de datos de muestra como mtcars , o cree algunos datos de muestra con data.frame() . Si sus datos son muy complejos y esa complejidad es realmente necesaria para ilustrar el problema, también puede usar dput() . Evite utilizar funciones como read.csv() , a menos que tenga preguntas relacionadas con funciones como fileInput .

Código de ejemplo

Siempre reduzca su código al mínimo para reproducir su error o comportamiento inesperado. Esto incluye eliminar llamadas a archivos .js y archivos .js adicionales y eliminar funciones innecesarias en la ui server y el server .

Las aplicaciones Shiny a menudo constan de dos o tres archivos ( ui.R , server.R y posiblemente global.R ), por ejemplo, esta aplicación de demostración . Sin embargo, es preferible publicar su código como un solo script, para que otros puedan ejecutarlo fácilmente sin tener que crear manualmente esos archivos. Esto se puede hacer fácilmente por:

  • envolviendo su ui con ui <- fluidPage(…) ,
  • el servidor con server <- function(input,output, session) {…} ,
  • y posteriormente llamando a shinyApp(ui, server) .

Entonces, para empezar, un simple esqueleto podría tener el siguiente aspecto:

library(shiny) ui <- fluidPage( ) server <- function(input,output,session) { } shinyApp(ui, server)

Ejemplo de trabajo

Por lo tanto, teniendo en cuenta todo lo anterior, un buen ejemplo Mínimo, Completo y Verificable para una aplicación Shiny podría verse como sigue:

library(shiny) df <- data.frame(id = letters[1:10], value = seq(1,10)) ui <- fluidPage( sliderInput(''nrow'', ''Number of rows'', min = 1, max = 10, value = 5), dataTableOutput(''my_table'') ) server <- function(input, output, session) { output$my_table <- renderDataTable({ df[1:input$nrow,] }) } shinyApp(ui, server)

Añadiendo CSS

Hay varias formas de agregar CSS personalizado a una aplicación Shiny, como se explica here . La forma preferida de agregar CSS a una aplicación Shiny en un ejemplo reproducible es agregar el CSS en el código, en lugar de en un archivo separado. Esto se puede hacer agregando una línea en la ui de usuario de una aplicación, por ejemplo, de la siguiente manera:

tags$head(tags$style(HTML(''body {background-color: lightblue;}''))),