# R en Maguyva: grafos de código para análisis y paquetes

Canonical source: https://maguyva.ai/es/languages/r

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva admite R con AST, símbolos y grafo, para que los agentes de IA sigan funciones, despacho S3 y S4 y llamadas de ajuste de modelos en scripts y paquetes de R.

## Resumen de soporte

- Nivel: Soporte de AST y símbolos
- Programación
- Extensiones: .r, .rmd, .rnw
- Análisis AST real para búsqueda con reconocimiento de sintaxis y contexto estructural.
- Los símbolos con nombre alimentan la búsqueda semántica y las referencias cruzadas. La navegación por grafo está disponible cuando la extracción de relaciones está habilitada.
- Este lenguaje aporta símbolos y relaciones a la búsqueda basada en grafos; los tipos de arista disponibles varían según sus construcciones nativas.
- Están disponibles tanto el análisis AST como la extracción de símbolos.

## Mejor uso

- Paquetes de R con muchas funciones exportadas, métodos S3 y helpers internos.
- Pipelines de análisis repartidos en scripts que comparten funciones de limpieza de datos y de modelado.
- Equipos de datos que entregan código R a agentes de IA que necesitan ver qué funciones alimentan qué modelos.

## Flujos de trabajo del agente

- Encontrar todos los llamadores de una función de limpieza de datos antes de cambiar las columnas que devuelve.
- Rastrear qué funciones despachan con `UseMethod` y dónde viven sus métodos.
- Mapear el camino desde la carga de datos en bruto hasta un modelo ajustado.

## Dónde R hace tropezar a las herramientas de IA superficiales

R pone las funciones base, las de los paquetes y las tuyas en un único espacio de nombres plano. Los puntos forman parte de los nombres, no son acceso a miembros: `is.na`, `data.frame` y `print.summary_table` son identificadores únicos. Una herramienta que lee `print.summary_table` como un método sobre `print` entiende mal la estructura, y una que registra cada llamada base entierra tus funciones bajo `c()` y `paste()`.

Maguyva mantiene enteros los nombres de R y filtra el ruido de las funciones base, para que un agente vea las funciones de las que tu análisis depende de verdad.

## Qué extrae Maguyva en R

Maguyva asigna los archivos `.R`, `.Rmd` y `.Rnw` a R. Las funciones asignadas a un nombre, como `clean_survey <- function(df)`, se extraen con ese nombre, y las funciones anónimas no se tratan como definiciones. Los nombres con puntos nunca se dividen en receptor y miembro.

Algunas llamadas de R base se quedan en el grafo a propósito porque muestran cómo está cableado el código de análisis: el despacho S3 y S4 (`UseMethod`, `standardGeneric`), la familia apply (`lapply`, `sapply`, `vapply`, `mapply`), el ajuste de modelos (`lm`, `predict`, `anova`), la carga de paquetes (`library`, `require`) y el manejo de errores con `tryCatch`.

El grafo también registra instanciación y lecturas y escrituras.

## Ejemplos de prompts para agentes

- "¿Quién llama a `clean_survey` y qué modelos usan su salida?" (`find_symbol`, luego `dependency_search` incoming)
- "¿Qué funciones llaman a `fit_model`?" (`dependency_search`)
- "Rastrea el camino desde `load_raw_data` hasta la regresión final." (`get_task_context`)

## Limitaciones conocidas

- Unos 800 nombres de R base, `stats` y `graphics` se filtran de las relaciones, como `print`, `paste`, `c`, `data.frame`, las llamadas de gráficos y los generadores de números aleatorios. Usa `text_pattern_search` para encontrarlos.
- R crea clases y carga paquetes con llamadas a funciones normales, así que los presets `classes`, `imports` y `variables` de `structural_search` no seleccionan nada. Usa `find_symbol` y `text_pattern_search`.
- Los archivos `.Rmd` y `.Rnw` se leen completos con la gramática de R en lugar de chunk por chunk, así que espera resultados parciales en documentos R Markdown y Sweave.
- R no tiene sintaxis de decoradores, así que las relaciones de decoradores están marcadas como no aplicables.

## Próximos pasos

Conecta un repositorio con el [inicio rápido](/es/docs/quickstart) y luego revisa la matriz de compatibilidad en la [página de compatibilidad](/es/docs/compatibility). Para repositorios mixtos de ciencia de datos, lee también la [guía de Python](/es/languages/python).

## Detalles del motor

- El soporte de R asigna `.R`, `.Rmd` y `.Rnw` a R. Las funciones asignadas a un nombre se extraen con ese nombre, y los nombres con puntos como `data.frame` se mantienen enteros.
- El despacho S3 y S4 (`UseMethod`, `standardGeneric`), la familia apply, `lm`, `predict` y `tryCatch` se quedan en el grafo a propósito.
- Unos 800 nombres de R base, `stats` y `graphics`, como `print`, `paste` y `c`, se filtran de las relaciones.

## Puntos de entrada MCP útiles

- `find_symbol`: Úsalo para el nombre de una función de limpieza, de modelado o de un método S3 cuando necesites la definición y los llamadores.
- `dependency_search`: Usa el recorrido incoming sobre una función auxiliar para ver qué análisis dependen de ella antes de cambiar su salida.
- `get_task_context`: Úsalo para prompts como "rastrea el camino desde la carga de datos en bruto hasta la regresión final".
