Jorge Valente Hernández Castelán | Algunas formas de ver a Uber en datos: Shiny en acción
videoimage: thumbnail.jpg
Transcript#
This transcript was generated automatically and may contain errors.
Bueno, la idea de esta aplicación, como tal, es conocer qué tanto desarrollo se le puede dar a un programa, qué tanto alcance tiene Shiny como una patria para crear aplicaciones interactivas, aplicaciones web en general, y cuál es su límite en desarrollo, y si es que lo tiene, porque creo que realmente el límite de una aplicación Shiny lo da la misma imaginación de las personas.
Ahora, como les decía, quisiera comenzar hablando acerca del paso a paso, del desarrollo que hubo en esta aplicación, de los retos que hubo, porque hubo bastantes, de hecho, entonces creo que es una buena forma de conocer cómo es en general el desarrollo de una aplicación, cómo es sobre todo la customización, integrar otras herramientas como lo son los HTML widgets, sobre todo widgets basados en paqueterías de JavaScript, y que pueden ser muy interactivos.
y si es que lo tiene, porque creo que realmente el límite de una aplicación Shiny lo da la misma imaginación de las personas.
Objetivo y origen de la aplicación
Entonces, quisiera comenzar comentándoles cuál fue el objetivo de esta aplicación. Bueno, en este caso el objetivo fue simplemente ver el límite que tiene Shiny, o el alcance que tiene para poder crear una aplicación, y esto, de hecho, esta aplicación surgió de una manera interesante, porque en los últimos dos años, la creación de aplicaciones para mí se ha vuelto como el pan de cada día, ha sido como un hobby más que nada, y yo siempre he estado como intentando buscar qué más puedo hacer, encontrar algunos datos en internet, o algo por el estilo, información, estadísticas oficiales, por ejemplo, del gobierno, cosas así que se puedan ir como construyendo poco a poco, con un poco de creatividad sobre todo.
Y con esto, un día yo simplemente estaba en la página de Dash de Python, y me encontré con una aplicación interesante, que hablaba acerca de estos temas, entonces ahí fue cuando me hice la pregunta, ¿será posible realizar la misma aplicación pero en R? Y con eso se me ocurrió, voy a descargar los datos, voy a comenzar a trabajar con la información, y veamos hasta qué punto puedo crear una aplicación por el estilo, o incluso mejorarla.
Ahora, ¿qué se logró con ella? Sencillo, con esta aplicación, en general la idea era crear un programa que pudiera visualizar absolutamente todos los datos de Uber en la ciudad de Nueva York durante un mes entero. La idea era que tú pudieras filtrar la información por día, que pudieras visualizar ciertas zonas, e incluso que pudieras visualizar ciertas horas del día. Esto para que fuera como una forma muy interactiva y muy sencilla de entender más o menos cuáles son las horas de mayor densidad de viajes en Uber, por ejemplo, las zonas con mayor densidad, esto lo puedes ver muy sencillamente en un mapa, lo puedes ver en una gráfica de barras, en un histograma por ejemplo.
Primer reto: procesamiento de los datos
Y aquí fue donde comenzó el primer reto. Porque cuando yo descargué la información, eran como 600 mil observaciones. Aquí tenía una cadena de caracteres para la fecha. Teníamos la fecha y hora. Entonces la idea era, ¿cómo puedo dividir en horas y en fechas? Entonces, aquí fue donde comenzaron mis primeras ideas. Aquí tenía dos formas de hacerlo. Podía utilizar lubricate para una paquetería maravillosa, para poder trabajar con fechas. Pero yo opté por intentar otra cosa que a mi parecer era un poco más rápida de compilar en el lenguaje R.
Y creo que fue un poco más interesante de aplicar, que fue tomar esa cadena de caracteres y convertirla en dos separados. Uno que era la hora del día, que eso también fue otro reto porque tuve que usar una función condicional para poder separar esa... porque esa hora estaba también en minutos. Entonces, separar como ciertos periodos del día, para ir viendo, ok, todos estos datos son de la una de la tarde, por ejemplo, o de las dos de la tarde. Y por otra parte, separar para las fechas. Eso fue mucho más sencillo, solamente aplicando la función substring del lenguaje de base. Con eso se pudo hacer muy sencillamente la separación por fecha y hora.
A partir y ya con la fecha puedes ir filtrando la información acerca de, ok, en este día hubo tantos viajes. En este otro día hubo otros tantos. Y a partir de eso, ir viendo, en este mismo día, los viajes tuvieron una mayor densidad, en cierta hora, por ejemplo, a las dos de la tarde, pudo haber sido la hora con mayor densidad. Es un ejemplo, no recuerdo bien ahora mismo, pero es un ejemplo.
Customización y estructura de la aplicación
Entonces, aquí luego empezó un poco más de creatividad. Era, ¿cómo voy a customizar la aplicación? Bueno, de hecho tenemos muchas librerías para hacerlo, como VSLib, como HTML Widgets, pero yo opté por utilizar mayormente código de HTML y CSS porque es una forma como mucho más flexible y mucho más dinámica, bueno, no dinámica, más bien mucho más interactiva para hacer esto.
Ahora, una buena pregunta, ¿superó las expectativas iniciales de esta aplicación? Bueno, para eso, creo que lo correcto sería visualizar ambas aplicaciones y que cada persona diera su veredicto acerca de ellas. Entonces, si se logró hacer algo más interesante o si a la perspectiva de otras personas la aplicación original fue mejor, creo que eso ya es más una cuestión de perspectiva personal de cada quien.
Ahora, otra cosa muy importante que quiero comentar y con lo que quiero iniciar esta plática es la estructura de la aplicación, porque aquí esto, aunque no lo parezca, es de las partes más importantes y sobre todo lo que yo suelo utilizar mucho es separar los archivos, que es el UI, el server y el global. Básicamente, el archivo global lo que hace es cargar todas las librerías, todos los objetos que se vayan a utilizar. El UI es simplemente la customización que uno como usuario ve, la salida de las imágenes, de las gráficas, los textos que haya, por ejemplo, los logotipos, las imágenes, etc. Y el servidor es donde se compila toda la información.
La razón por la que yo suelo separar estos archivos, más que por tiempo de compilación o eso, yo lo suelo hacer más que nada por una cuestión de orden, porque es mucho más sencillo poder identificar ciertos códigos o ciertas partes de la aplicación si lo tienes muy dividido, muy seccionado. Que eso también, cuando ya son aplicaciones muy grandes, también a mi parecer es muy recomendable utilizar módulos, aunque eso ya es un poco más complicado al principio, pero es muy útil a largo plazo.
Comparación con la aplicación original y diseño visual
De acuerdo, ahora, ¿qué se pudo hacer con la aplicación? Como pueden ver, del lado derecho tenemos a la aplicación original de Plotlight, y del lado izquierdo, mi versión en Shiny. La idea era hacer algo que se viera muy interactivo y tratar de mejorarlo visualmente, tratar de hacer algo que se notara incluso más sencillamente, que fuera autoexplicable.
Por ejemplo, en la aplicación de Dash, utilizan una paleta de colores de Viridis, me parece. En este caso yo preferí utilizar una paleta de colores que se basara en los colores amarillo, rojo y azul, porque me parecía que era más sencillo identificar colores amarillos para las primeras horas del día, colores rojos para el mediodía y colores azules para la noche. Siento que esa es una manera más sencilla y autoexplicable de entender las horas de densidad de los viajes en Uber.
Por esa parte traté de mejorarlo, sobre todo también darle una mejor visualización al mapa. Para esto, simplemente lo moví en una cierta escala para que... y lo roté con algunos códigos para que se viera como un poco más en tres dimensiones, que no se viera solo como un mapa estático o un mapa que se viera como si fuera un lienzo. Yo quería que se viera como algo más vivo a la vista.
Ahora, sobre la customización de la aplicación, eso ya fue como algo más sencillo, simplemente ordenar nombres, poner un logotipo, un logotipo que suelo usar bastante en mis aplicaciones, creo que voy a comenzar a patentarlo y simplemente utilizar una paleta de colores que fuera como acorde, cambiar el fondo, hacer que se viera pues agradable a la vista, que cualquier persona que entrara lo viera y dijera ok, ok, esto trata de esto y se ve interesante, voy a jugar con la información.
Inputs, outputs y reactividad
Ahora, sobre las partes de la aplicación, ya saben, tenemos los inputs y los outputs, los inputs en general son los botones en los que tú seleccionas el día, hora, etcétera. Y los outputs son lo que te devuelve la aplicación cuando tú filtras cierta información. Por ejemplo, en este caso, te filtra la zona, te filtra el horario, el día, sobre todo, y realmente eso al principio es como un poco complicado de aplicar, porque las aplicaciones como tal a veces son poco intuitivas respecto a cómo aplicar una entrada y una salida. Esas son cosas que se van aprendiendo poco a poco y son cosas que después de un cierto tiempo se vuelven bastante intuitivas, pero a mi parecer son cosas que requieren mucha práctica.
Actualmente yo creo que utilizar aplicaciones en Shiny a veces es incluso más sencillo que simplemente ir a la consola de R y utilizar la función filtra, por ejemplo, de dplyr, para filtrar cierta información. Es mucho más rápido tomar el ID de cierta función, crear un vector más bien con los datos que quieres filtrar y ya con eso simplemente tú vas seleccionando con un botón. Es como, a mi parecer, mucho más sencillo y mucho más intuitivo para las personas. Creo que esto es más que nada como un resultado visual que iría como al usuario final, sobre todo para las personas que no tienen mucho conocimiento en programación. Creo que esto es muy útil. Claro, no programarlo, sino mostrárselo a las personas, sobre todo.
HTML, CSS y la customización óptima
Ahora, como les comentaba hace un momento, customizar la aplicación como tal es algo sencillo. Existen muchas librerías para hacer esto, como VSlib, como Shiny Widgets, pero creo que lo ideal y lo más óptimo es utilizar HTML y CSS y esto, ¿por qué lo digo? Porque ese es el lenguaje en el que se basan esas librerías para hacer la customización de la aplicación. Esas librerías lo único que hacen es codificar ciertos códigos de HTML o ciertos colores o ciertos tamaños, figuras, en funciones que puedas aplicar en R.
Yo creo que lo mejor en este caso es directamente tú aplicar esos códigos de HTML, por ejemplo, para dar formas, para dar espacios y los códigos de CSS para controlar colores, fuentes, etc. Por eso digo que esa es la forma óptima de poder trabajar esa información, esa vista, es directamente aplicando el código original para hacer eso. Es como una manera más laxa de hacerlo, podría decirse.
HTML widgets: mapas y gráficas
Ahora, comenzando ya a hablar acerca de los HTML Widgets aplicados, por ejemplo, he notado que el paquete más usual que suelen utilizar para crear mapas es Leaflet. A mi parecer es un excelente paquete porque tiene otros subpaquetes que te enseñan otras formas de customizarlo, que te incluyen, por ejemplo, mini gráficos dentro del mapa y es excesivamente customizable.
En este caso, yo lo que quería era que fuera mucho más rápido de compilar, que no tardara en cargar el mapa. Entonces, para eso utilicé la librería de JavaScript, Macbox, que en este caso tiene un compilador en R que se llama Macboxer. Es una librería buenísima. Lo que me gusta mucho de esta librería específicamente es que carga excesivamente rápido la información. En este caso podemos ver, para este día específico, tenemos como aproximadamente unos 50 mil viajes y podemos ver que no le toma prácticamente nada hacer zoom, alejarse, acercarse, ir a ciertas zonas y eso.
Y eso es lo que me encanta de esta librería, que cuando tú directamente haces zoom o filtras o haces algo así, lo hace prácticamente a tiempo real. Y eso me parece increíble, que el usuario pueda ver algo sumamente sencillo y que lo vea de manera muy veloz, porque eso creo que también es una parte muy importante de una aplicación, que funcione rápido. Y porque no solo que funcione rápido por compilación, sino porque eso es más agradable para los usuarios. Difícilmente alguien que ve una página que tarda mucho en cargar, por ejemplo, se va a quedar a analizar la información. Pero en este caso como funciona de manera muy rápida, es muy probable que se ponga a jugar con la información y empiece a ver todo más a fondo.
Luego, ahora para las gráficas. En este caso un histograma que se utilizó. Para esto opté por utilizar eCharts, que es una librería de JavaScript de Apache Charts, que lo que hace es generar gráficos interactivos, igualmente que pueden tener tooltips, por ejemplo, etiquetas, que son extremadamente customizables. De hecho, si se meten a ver su documentación oficial, son como 200 páginas de pura customización.
Ahora, otra cosa que me agrada mucho igualmente de este paquete, es que no solo es muy rápido para compilar, sino que es muy agradable visualmente, y creo que además tiene códigos muy sencillos de comprender. Por ejemplo, para inicializar un gráfico utiliza la función eCharts, y con eso ya simplemente escribes eLine, por ejemplo, para hacer una línea, o eBar para hacer un gráfico de barras, eHistogram en este caso. Bueno, claro que esas son las funciones que fueron integrando el desarrollador, bueno, el que desarrolló este paquete directamente para R, el buen John Cohen, que le agradezco mucho porque ha creado paquetes muy interesantes que yo he utilizado bastante.
Bueno, creo que eso es una ventaja de esta librería. Aparte de que es muy customizable, que es muy agradable a la vista, es muy sencilla de utilizar en realidad. Y eso es lo que me gusta, que no tienes que dedicar mucho tiempo a entender los códigos, sino que con esto puedes dedicar más tiempo a volar tu imaginación y pensar cómo puedo customizar el gráfico que estoy haciendo, cómo puedo darle un mejor aspecto.
Velocidad de lectura y filtrado de datos
Ahora, otro reto interesante, es cómo voy a leer la información de una manera veloz, viendo que tenemos una tabla con 600.000 datos, por ejemplo. Y eso, y aparte, ¿cómo la voy a filtrar de manera rápida ya que la haya leído? Considerando, claro, que es una base de datos enorme. Ahí la cosa es que tenemos varias alternativas a las funciones FreeCSP, por ejemplo, o a las funciones para filtrar de DeepLayer. En este caso, yo opté por utilizar FastRead del paquete DataTable, porque compila sumamente rápido, aunque también existe la opción del paquete Room, con la función del mismo nombre, que cuando se trata de DataFrames aún más grandes, lo suele leer un poco más rápido. Para este caso, como eran 600.000 observaciones, creo que fue suficiente con FastRead de DataTable.
Pero no era suficiente, necesitábamos una alternativa para poder leer la información de manera muy veloz. En este caso, utilicé DeepLayer, pero enmascarándolo con las funciones de DT Player, que lo que hace es utilizar la sintaxis de DataTable para poder aumentar la velocidad de las funciones de DeepLayer, lo cual hizo que la aplicación funcionara prácticamente en tiempo real. Esto hacía que fuera mucho más rápida al cargar, mucho más rápida al iniciar hacia el principio. Eso hacía que prácticamente la aplicación volara y funcionara en tiempo real, que no hubiera filas de espera para poder simplemente filtrar un día o filtrar una hora, por ejemplo.
Esa es una recomendación que yo siempre daría para crear una aplicación en R. Que las aplicaciones siempre trates de buscar una alternativa en librerías que te puedan dar una mayor velocidad, porque una parte muy importante, a mi parecer, del análisis de datos y la estadística es poder visualizar esa información muy rápido, porque si quieres hacer otro tipo de análisis, necesitas necesariamente tener una velocidad alta en la lectura y la escritura de la información, y también, por ejemplo, en la creación de una nueva variable o cuando creas grupos para seccionar la información, por ejemplo.
Esa es una recomendación que yo siempre daría para crear una aplicación en R. Que las aplicaciones siempre trates de buscar una alternativa en librerías que te puedan dar una mayor velocidad, porque una parte muy importante, a mi parecer, del análisis de datos y la estadística es poder visualizar esa información muy rápido.
Demo de la aplicación en tiempo real
Ahora simplemente unas referencias bibliográficas de las librerías utilizadas, de sus documentaciones oficiales y algunas referencias utilizadas cuando empezaba a utilizar Shiny como una forma de crear aplicaciones web.
Pues muchas gracias por el tiempo de esta charla y bueno, ahora como último punto, quisiera mostrarles un poco de la aplicación creada, el resultado final en tiempo real, que a mi parecer, como pueden ver, funciona, ahora que lo cargué, funciona bastante rápido. Por ejemplo, podemos filtrar a cierto día, podemos seleccionar la zona y así, podemos ir viendo la información, por ejemplo, para el aeropuerto de Nueva York.
Otra cosa que tiene la aplicación es que tú puedes ir filtrando la hora y te lo va diciendo muy claramente, las horas que tú tienes seleccionado en el histograma y te va rellando los puntos que tienes, por ejemplo, los puntos que tienes en el mapa. Y tú puedes ir viendo, ok, por ejemplo, los de la mañana. Como pueden ver, son los puntos amarillos o los del mediodía. Y ya son los puntos rojos o los de la noche. Es lo que les decía, es una forma muy interactiva de ver la información y una forma muy agradable.
El punto de esto es que la gente se sienta cómoda analizando. Aparte de esto, puedes ver información al final de... Ok, la hora con mayor densidad de viajes fue, por ejemplo, en este caso, las 7. La cantidad de horas seleccionadas fue... La cantidad de horas que tenemos seleccionadas actualmente son 8 y el número de viajes totales para este caso fueron 6867 para este día y para las horas seleccionadas.
Bueno, en este caso creo que sería toda mi presentación. Espero que les haya gustado la aplicación, que les haya motivado por si un día quieren comenzar a crear aplicaciones web, o si quieren adentrarse en este mundo de la visualización de datos, que creo que es muy maravilloso y que tiene un potencial prácticamente ilimitado.
Preguntas y respuestas
Hola, Jorge, gracias muchísimo por tu presentación. Nada más quería, de parte de Rachel, es poder decir a los participantes si quieren poner una pregunta en Slido, que Rachel ya puso el URL en el chat, pero también si querían quitar el mute, pueden hablar y preguntarte a ti directamente.
Este es relativamente grande, pero lo que hago yo para leer todos mis archivos, los subo a la aplicación y los leo al principio. Nunca he usado un punto global. ¿Dónde puedo encontrar, no sé, tutoriales? No sé si tú tienes en tu página. ¿Qué beneficios tiene el punto global de leer los archivos ahí a tenerlos en el server, digamos?
Bueno, creo que más que nada ahí el punto clave es que tengas como un mayor orden en la aplicación. No tanto por la velocidad de carga, porque prácticamente será la misma donde pongan los archivos. Lo que yo recomendaría es como para que encuentres la información mucho más fácil, o si quieres, no sé, a lo mejor revisar cierto archivo y eso que lo encuentres como mucho más fácil. Es por eso que yo la suelo dividir en secciones, para que no te confundas tanto al final. Sobre todo, en tu caso que tienes como ya muchas líneas de código, creo que sí sería muy útil que la dividas como en secciones para que sea como más sencillo, por ejemplo, pasar al server, al UI o al global. Eso ya es como una cuestión de orden, más que nada.
Hola, Jorge, gracias por la presentación. Te quería preguntar exactamente cómo podemos usar DTPlayer. ¿Necesitamos que aprender el syntax de DT o de Data Table? ¿O cómo funciona exactamente? No entendí. Gracias. Eso es lo maravilloso de esa paquetería, que no necesitas realmente aprender la syntax de Data Table. Simplemente tú escribes el nombre de las dos librerías, DPlayer y DTPlayer, y lo que hace simplemente, la última, es enmascarar las funciones de DPlayer. Y prácticamente lo único que tienes que hacer es escribir las mismas funciones de DPlayer, y con eso te va a aumentar la velocidad cuando tú decidas filtrar la información o trabajar con la información. Eso es lo que me agrada mucho de esa paquetería, de hecho.
Sí, el código está disponible. Si quieren, se los comparto en el chat. Y, en un segundo, ahí tienen el código disponible para que puedan practicar o puedan... o si quieren replicarla, lo que ustedes quieran.
Hola, buenas tardes. Buenos días. Disculpa, entré un poquito tarde y no sé. Pero para... A mí me ha dado miedo usar un poco Shiny, ¿no? Pero es porque, no sé si hay que utilizar o tener conocimiento, mejor dicho, de HTML, CSS y todos esos elementos de web que, no sé, me abruman un poco. Me gustó mucho tu presentación y la interactividad que allí presentas está excelente. Pero hay que tener también conocimiento de esto, de estos elementos de programación web.
En realidad no es tan necesario. Yo los utilicé, en este caso, porque yo quería darle un cierto aspecto muy específico en ciertas zonas de la aplicación. Por ejemplo, un cierto espacio en los títulos o un cierto espacio en los espacios que hay entre botón y botón. Pero no es necesario aprenderlo porque directamente las aplicaciones en Shiny ya te codifican todo ese código en HTML. Por ejemplo, cuando tú usas la función FluidPage, eso ya te genera todos los códigos de div, de HTML para poder generar una página, un lienzo en blanco, por ejemplo, en este caso. Y cuando tú, en lugar de utilizar un div para crear dos columnas, solamente utilizas la función column y le das un width igual a... Me parece que es un número del 1 al 12. Y con eso es suficiente. Yo creo que para comenzar no necesitas saber prácticamente nada de HTML o CSS. Eso es más como... Ya cuando quieres dar aspectos muy específicos de la aplicación.
Sí, buenos días, Jorge. Gracias por la presentación. Bueno, buenas tardes para mí. Una pregunta. No te oí en toda la presentación decir nada en torno a la seguridad de los datos. Me refiero a la posibilidad... Mejor dicho, a la imposibilidad de que los datos se hagan públicos. Si uno quisiera trabajar en un entorno más restringido o algo por el estilo. Aunque la aplicación esté abierta. ¿Me podrías comentar algo en ese sentido? Si es implementable, dada esa estrategia que has diseñado. Por un lado el server, por otro lado las imágenes. En fin, un poco como si lo tienes previsto o si es posible.
De hecho sí es posible. Bueno, directamente las aplicaciones, cuando tú las subes a Shiny Apps, tienen un certificado de seguridad de CSL. Pero bueno, eso ya es otro tema. Pero si tú quisieras, por ejemplo, crear una aplicación que sea directamente para tu empresa. Que sea de uso interno o para información muy restringida. O que sea información sensible, por ejemplo. Tú puedes generar una... Por ejemplo, con la librería Shiny Manager. Puedes crear una capa de contraseñas. Para que solamente gente a la que tú autorices pueda entrar a esta información. Otra cosa que puedes hacer es... Por ejemplo, en lugar de jalar la información de archivos CSV o Excel, por ejemplo. Puedes jalar los de SQL. Es otra opción que es como más segura, un poco más restringida, podría decirse. Pero sí, es posible crear una aplicación que sea segura, por ejemplo, en un ámbito laboral.
Hola Jorge, hay una pregunta en el chat. Alguien quiere preguntar si hay alguna restricción para usar el API de Uber. Bueno, me parece que el límite de consultas para la API de Uber es... No estoy seguro. La verdad, te mentiría si te dijera el dato ahorita exacto. Pero me parece que es de 100.000 por día, creo. Sin embargo, para el uso de esta aplicación, la información la terminé bajando de un archivo de CSV. Me parece que la restricción para utilizar el API de Uber es muy laxa. Puedes bajar muchísima información de manera muy rápida.
Sí, Jorge. ¿Cómo están? Bueno, Jorge, una pregunta muy breve y muy abierta. Yo quiero incursionar en el mundo de Shiny desde hace algún tiempo. Por X, Y, Z motivos no he podido. Entonces, no he tenido tiempo, pero que sea. Quería preguntarte sobre unas recomendaciones para alguien nuevo.
¿Recomendaciones para alguien nuevo? Hay lo importante más que comenzar con un curso o con tutoriales o eso. Bueno, obviamente necesitas tutoriales para comenzar, pero lo que yo recomiendo más que nada es practicar todos los días. Y es algo de mucha práctica, sobre todo... Otra cosa que es como muy... A lo mejor un poco complicada al principio o un poco extraña de entender es que como son argumentos que van dentro de más funciones y más funciones, entonces va a haber muchísimos paréntesis dentro de la aplicación y eso puede ser un poco confuso. Así que es otra cosa que también debes practicar mucho e ir viendo como dentro de los paréntesis que no se te vayan comas en la aplicación porque si no ya probablemente ya no te vaya a correr.
Así que es prácticamente practicar. Es lo que a mi parecer lo que más va a ser de tu ayuda para ir mejorando poco a poco y creando cada vez aplicaciones un poquito más grandes, más complejas. Otra cosa es que cuando tú utilizas un argumento de alguna función y aparte el signo de interrogación antes del argumento de la función, entonces te va a dar como tips de esa función toda la documentación que hay y aparte el 90% de las veces te va a dar un código de muestra. Ese lo puedes copiar e ir viendo cómo funciona la sintaxis, cómo trabaja el programa en general. Y ya con eso puedes ir dándote una idea poco a poco de cómo funciona Shiny y cómo lo puedes ir trabajando tú, cómo puedes ir aprendiendo de todas esas dinámicas.
Hay otra pregunta en el chat. ¿En el código utilizas el Pipe en lugar del típico de Deployer? ¿Esto es por la librería que utilizas? No. Lo que pasa es que el Pipe que yo utilizo es el Pipe nativo de R que se implementó me parece en la versión 4.1. No estoy seguro, pero después de la versión 4 se utilizó y eso sí es más una cuestión de comodidad y de gustos. Por eso me gusta más el Pipe nativo, pero tú puedes seguir utilizando el Pipe original, el que utiliza los signos de porcentaje. Funciona exactamente igual, solamente tienes que ir a Global Options y seleccionar la opción para utilizar el Pipe original. Eso ya es cuestión de gustos.
Como recomendación personal, yo quiero dar un paso más en Shiny. ¿Qué más recomiendas? ¿Aprender primero HTML, CSS o JavaScript? No sé ninguno de los tres. Bueno, yo te recomendaría que comiences con HTML y CSS, porque es que JavaScript no es tan necesario para aprender Shiny, sino que es más que nada para utilizar librerías que son muy interactivas. Por ejemplo, la del mapa que te llevaba de un lugar a otro o el gráfico que simplemente se redibujaba en tiempo real. Esas son librerías basadas en JavaScript, que es más o menos la ventaja de ese lenguaje, que hace cosas muy visuales y muy interactivas. Pero es más como una herramienta que podrías implementar cuando ya quieres hacer algo muy interactivo, pero no es tan necesaria al principio cuando comiences a aprender a utilizar Shiny. Digamos que HTML, CSS lo utilizas como para la parte bonita de la aplicación y JavaScript no solo es para eso, sino que es para la interactividad.
Hola Jorge, otra pregunta que me vino a mí directamente, alguien quiere saber la capacidad de procesamiento que demanda el app. Es decir, ¿hay un mínimo de memoria de RAM o un procesador especialmente que necesitas? Eso creo que ya depende un poco del contexto de la aplicación. Por ejemplo, si utilices una aplicación que... Porque lo que hace Shiny es que toma cierta parte de tu memoria RAM para poder cargar toda esa información. Pero eso también lo hace cuando la cargas en el servidor, por ejemplo, de Shiny Apps también, para que funcione con cierta fluidez, igual toma tantita memoria RAM de tu computadora. En este caso, yo creo que lo óptimo sería a lo mejor tener una computadora con 8 GB de RAM, que realmente es como lo estándar ahorita, pero es más que suficiente para cargar información muy grande. Además, en cuanto a procesadores, no es tan necesario tener un procesador potente, pero sí es recomendable. Realmente como, por ejemplo, un Core i3 de décima generación, o incluso desde octava generación, ya te iría muy fluida la aplicación. ¿Y así quieres darle como demasiada potencia? Tal vez un Core i7, un chip M1 de una Mac, algo por el estilo.
Buenos días, todo el mundo. Me llamo Isabela. Yo trabajo con Rachel en RStudio. Muchas gracias, Jorge, por la presentación. La grabación estará disponible en la página de YouTube de RStudio. Y muchas gracias a todos por unirse con nosotros. Muchas gracias a ustedes por invitarme. Fue un gusto enorme.
