es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ventana emergente no apareciendo en la aplicación R Shiny

Estoy intentando implementar una aplicación Shiny a través de https://www.shinyapps.io, pero estoy experimentando dificultades. Nota: todo funciona bien localmente en mi máquina.

Específicamente, mi aplicación llama a uno de mis paquetes de R y ejecuta dicho paquete en segundo plano. El paquete solicita al usuario que ingrese un archivo FASTA a través de base::file.choose().

Mi problema es similar al que se describe aquí:

https://stackoverflow.com/questions/58176070/error-when-using-file-choose-in-shiny-web-app-deployed-online

¿Hay alguna manera sencilla de resolver esto sin tener que usar shiny::fileInput()? No quiero tener que cambiar ningún código de mi paquete.

Mi aplicación se encuentra aquí: https://hacsim.shinyapps.io/hacsim-rshiny-app/

Para reproducir el error que obtengo, haga clic en “EJECUTAR SIMULACIÓN”, luego vaya a “Sub interfaz” y haga clic en “Ejecutar”. Debería aparecer una ventana emergente. En su lugar, aparece el error:

character(0)
Error: An error has occurred. Check your logs or contact the app author for clarification.

aparece en el panel de Resultados.

Cualquier ayuda es bienvenida y muy apreciada.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está relacionado con base::file.choose() que no funciona en una aplicación Shiny desplegada en línea. Una solución a este problema es utilizar shiny::fileInput() en lugar de base::file.choose(). Sin embargo, si no quieres cambiar ninguno de los códigos de tu paquete, aún puedes intentar el siguiente método alternativo.

    Primero, puedes intentar establecer el directorio de trabajo de tu aplicación en la carpeta donde se encuentra el archivo FASTA. Puedes utilizar setwd() para hacer esto. Por ejemplo, si el archivo FASTA está en una carpeta llamada “data” en tu directorio de la aplicación, puedes agregar la siguiente línea al comienzo de tu aplicación:

    setwd("data")
    

    Además, asegúrate de que el archivo FASTA esté incluido en la carpeta “www” de tu aplicación. Esta carpeta se utiliza para almacenar archivos estáticos que se pueden acceder mediante una URL en tu aplicación. Al desplegar tu aplicación en shinyapps.io, los archivos en la carpeta “www” se subirán junto con tu aplicación.

    Finalmente, puedes intentar utilizar directamente la ruta del archivo en lugar de usar base::file.choose(). Por ejemplo, si el archivo FASTA se llama “input.fasta”, puedes utilizar el siguiente código para leer el archivo:

    fasta <- read.fasta("input.fasta")
    

    donde read.fasta() es la función de tu paquete que lee el archivo FASTA.

    Con estos cambios, deberías poder desplegar tu aplicación sin tener que cambiar el código de tu paquete. Sin embargo, ten en cuenta que esta solución puede no ser la más robusta, ya que se basa en la estructura de carpetas de tu aplicación y asume que la ruta del archivo es fija. Si necesitas una solución más flexible, puede que valga la pena considerar el uso de shiny::fileInput() en su lugar.

Comments are closed.