Lo que aprendí organizando mis scripts de R para no perder tiempo

Tengo once carpetas distintas con alguna variación de la palabra «final» en el nombre, repartidas entre el disco duro y un respaldo externo, y cada una fue en su momento la versión definitiva de un mismo script de R que terminaba rompiéndose igual. Afuera llovía fuerte, una de esas tardes grises típicas de Valdivia donde el único ruido es el agua golpeando el vidrio, y yo trataba de retomar un mapa de teledetección del bosque que había dejado a medias un par de semanas antes. Abrí RStudio, corrí la primera línea y ahí estaban, como siempre, las letras rojas avisando que el archivo «imagen_septiembre.tif» no existía. Lo raro es que sí existía, lo tenía justo ahí, solo que mi script seguía apuntando a una ruta vieja porque yo misma había movido la carpeta la semana anterior tratando de «ordenar» el escritorio.

El desorden de carpetas no era el problema real

El problema de fondo no era que me faltara entender teledetección, sino mi propio desorden. Había una carpeta llamada «proyecto_final» que de final no tenía nada, y adentro otra llamada «datos_nuevos», y más adentro una tercera que yo misma, obviamente, bautizó «raster_v2_este_si». Pasar una tarde completa tratando de que R encontrara un archivo que tenía justo al frente se sentía como armar un rompecabezas a oscuras: apenas ubicaba una pieza, yo le había cambiado el lugar a las demás otra vez.

Antes de llegar a esto probé Google Earth Engine, pensando que ahí el problema de archivos se resolvía solo porque todo corre en la nube, pero la interfaz basada en JavaScript me cerró la puerta desde el principio: nunca había programado nada antes y esa lógica no se parecía a ninguna otra cosa que pudiera seguir sin ayuda. Conté la frustración en el grupo de Telegram donde conocí a Denise Alarcón, que manda memes de R a las dos de la mañana cada vez que algo finalmente le funciona, y me contestó justo con uno de esos, a una hora rarísima, que básicamente decía bienvenida al club. Volví a RStudio sintiendo que, con todos sus problemas, al menos ahí el idioma de los foros me alcanzaba para entender los errores.

Pantalla de RStudio con carpetas desorganizadas y mensajes de error en rojo durante un script de teledetección en R

No vale la pena ordenar los scripts perfectos antes de entender el código

Aquí va lo que aprendí y que suena al revés de lo que dicen la mayoría de los tutoriales de organización: estructurar las carpetas a la perfección desde el primer día es, para alguien recién empezando, un error. Pasé un sábado entero armando la «estructura ideal» que vi en un video: carpetas para scripts, para datos crudos, para datos procesados, para figuras, y lo único que logré fue bloquearme, pensando más en dónde guardar un archivo que en aprender cómo calcular el índice de vigor de la vegetación SAVI usando RStudio, que era lo que de verdad me importaba ese día.

Lo que funcionó después fue esperar a que el código realmente se rompiera antes de ordenar nada. Si uno no siente el dolor de no encontrar un archivo, es difícil entender por qué la carpeta necesita ese nombre y no otro, y dejar crecer el desorden un poco, hasta el punto justo antes de volverse insoportable, me enseñó más que cualquier plantilla descargada de internet.

Distinto es el caso del sistema de referencia de coordenadas, que tuve que aprender a fijar bien después de perder horas enteras preguntándome por qué mis puntos de terreno no caían sobre el raster correcto; ese tipo de detalle técnico sí lo anoto aparte, porque un error de coordenadas es mucho más difícil de rastrear que una carpeta mal puesta.

Cuaderno de notas con anotaciones a mano sobre la proyección cartográfica de un mapa de teledetección en R

El archivo .Rproj y el paquete here que organizaron mis rutas en RStudio

La solución técnica real llegó después, cuando por fin entendí para qué servían los R Projects, esos archivos .Rproj. Antes usaba la función setwd(), escribiendo la ruta completa del disco, y en el momento en que movía la carpeta a un disco externo o abría el script en otro computador, todo se rompía. El .Rproj funciona como un ancla: le dice a R cuál es el punto de partida, y desde ahí las rutas se vuelven relativas en vez de depender de dónde esté guardado el archivo ese día.

Ahí conocí el paquete here, que terminó siendo mi favorito. En vez de escribir rutas largas y llenas de barras, basta con poner here('datos', 'mi_raster.tif') y el programa lo encuentra sin importar en qué máquina estés trabajando. Sumado a eso dejé fija la codificación en UTF-8, para que las tildes de mis propios comentarios no se transformaran en símbolos raros tres meses después, cuando ya ni me acordaba qué estaba pensando al escribirlos.

Antes de ordenar nada de esto intenté seguir unos pasos para hacer mapas de alta calidad en R para informes técnicos y acabé mezclando datos de un sensor con los de otro, porque ni el proyecto ni las carpetas tenían ninguna lógica detrás. Separar los datos crudos, los GeoTIFF pesados que bajo de los satélites, de los resultados que ya procesé es ahora casi un mandamiento: los datos crudos no se tocan nunca, son la fruta, y lo que genero después es la mermelada que guardo en otro frasco distinto.

Mapa NDVI de bosque nativo y plantaciones de pino terminado en RStudio tras organizar los scripts de R

Cuando por fin un mapa salió sin que tocara una sola línea de código

Como a la sexta semana de tener esto por fin ordenado, me tocó un sábado distinto. Estaba revisando el NDVI para comparar cómo se veía el bosque nativo frente a las plantaciones de pino, abrí el RProject, cargué las librerías, y el script corrió completo de principio a fin sin que tuviera que tocar una sola ruta. Ver ese mapa terminado, con los verdes marcados justo donde sé que están los robles y los coihues, fue de esas cosas que te hacen sentir que todo el enredo anterior sirvió para algo.

Le mandé una captura a mi hermana esa misma tarde, y me sorprendí explicándole de memoria por qué el verde oscuro marcaba más vegetación densa y el café claro mostraba donde el bosque se había abierto, sin mirar ningún apunte ni volver a revisar el script. No sé en qué momento exacto pasó, pero en algún punto de esas seis semanas dejé de traducir el mapa para mí misma antes de poder explicarlo a alguien más.

Ordenar no es tiempo que se le resta al aprendizaje: es lo que hace que lo aprendido un sábado me sirva de nuevo el próximo invierno, cuando la lluvia me vuelva a sentar frente a la pantalla. Boris, el vecino del edificio que trabaja en infraestructura de servidores, me prestó su monitor externo esa misma tarde porque necesitaba ver dos capas al mismo tiempo, y mientras lo conectábamos sobre la mesa me dijo que no entendía nada de lo que hacía pero que el mapa se veía bien. No soy geógrafa ni programadora: solo soy alguien que quiere entender, píxel por píxel, cómo cambia el bosque que tiene cerca.

Si estás recién empezando, no te obsesiones con tener la carpeta perfecta antes de escribir la primera línea de código. Deja que el propio script te vaya pidiendo el orden que necesita, y el día que notices que llevas más de cinco minutos buscando un archivo, toma eso como la señal de crear una carpeta nueva, sin esperar ni demorar.

Artículos relacionados