# R dans Maguyva : des graphes de code pour l'analyse et les packages

Canonical source: https://maguyva.ai/fr/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 prend en charge R avec AST, symboles et graphe, pour que les agents IA suivent fonctions, dispatch S3 et S4 et appels d'ajustement de modèles dans les scripts et packages R.

## Aperçu du support

- Palier: Prise en charge de l’AST et des symboles
- Programmation
- Extensions: .r, .rmd, .rnw
- Analyse AST réelle pour une recherche consciente de la syntaxe et un contexte structurel.
- Les symboles nommés alimentent la recherche sémantique et le référencement croisé. La navigation par graphe est disponible lorsque l’extraction de relations est activée.
- Ce langage fournit des symboles et des relations à la recherche tenant compte du graphe ; les types d’arêtes pris en charge varient selon ses constructions natives.
- L’analyse AST et l’extraction de symboles sont toutes deux disponibles.

## Idéal pour

- Les packages R avec de nombreuses fonctions exportées, méthodes S3 et helpers internes.
- Les pipelines d'analyse répartis sur des scripts qui partagent des fonctions de nettoyage et de modélisation.
- Les équipes data qui confient du code R à des agents IA devant voir quelles fonctions alimentent quels modèles.

## Workflows d'agent

- Trouver tous les appelants d'une fonction de nettoyage avant de modifier les colonnes qu'elle renvoie.
- Retracer quelles fonctions passent par `UseMethod` et où vivent leurs méthodes.
- Cartographier le chemin du chargement des données brutes jusqu'au modèle ajusté.

## Là où R fait trébucher les outils d'IA superficiels

R place les fonctions de base, celles des packages et les vôtres dans un seul espace de noms plat. Les points font partie des noms, ce ne sont pas des accès à un membre : `is.na`, `data.frame` et `print.summary_table` sont des identifiants uniques. Un outil qui lit `print.summary_table` comme une méthode sur `print` se trompe de structure, et un outil qui enregistre chaque appel de base enterre vos fonctions sous `c()` et `paste()`.

Maguyva garde les noms R entiers et filtre le bruit des fonctions de base : l'agent voit les fonctions dont votre analyse dépend réellement.

## Ce que Maguyva extrait en R

Maguyva associe les fichiers `.R`, `.Rmd` et `.Rnw` à R. Les fonctions affectées à un nom, comme `clean_survey <- function(df)`, sont extraites sous ce nom, et les fonctions anonymes ne sont pas traitées comme des définitions. Les noms pointés ne sont jamais découpés en receveur et membre.

Certains appels de R de base restent volontairement dans le graphe, car ils montrent comment le code d'analyse est câblé : le dispatch S3 et S4 (`UseMethod`, `standardGeneric`), la famille apply (`lapply`, `sapply`, `vapply`, `mapply`), l'ajustement de modèles (`lm`, `predict`, `anova`), le chargement de packages (`library`, `require`) et la gestion d'erreurs avec `tryCatch`.

Le graphe enregistre aussi l'instanciation et les lectures et écritures.

## Exemples de prompts pour agents

- « Qui appelle `clean_survey`, et quels modèles utilisent sa sortie ? » (`find_symbol`, puis `dependency_search` en incoming)
- « Quelles fonctions appellent `fit_model` ? » (`dependency_search`)
- « Retrace le chemin de `load_raw_data` jusqu'à la régression finale. » (`get_task_context`)

## Limites connues

- Environ 800 noms de R de base, de `stats` et de `graphics` sont filtrés des relations, comme `print`, `paste`, `c`, `data.frame`, les appels de tracé et les générateurs de nombres aléatoires. Utilisez `text_pattern_search` pour les retrouver.
- R crée les classes et charge les packages avec des appels de fonction ordinaires : les presets `classes`, `imports` et `variables` de `structural_search` ne sélectionnent donc rien. Utilisez `find_symbol` et `text_pattern_search`.
- Les fichiers `.Rmd` et `.Rnw` sont lus en entier avec la grammaire R plutôt que chunk par chunk : attendez-vous à des résultats partiels pour les documents R Markdown et Sweave.
- R n'a pas de syntaxe de décorateur : les relations de décorateur sont donc marquées comme non applicables.

## Étapes suivantes

Connectez un dépôt avec le [démarrage rapide](/fr/docs/quickstart), puis consultez la matrice de prise en charge sur la [page de compatibilité](/fr/docs/compatibility). Pour les dépôts data science mixtes, lisez aussi le [guide Python](/fr/languages/python).

## Détails du moteur

- La prise en charge de R associe `.R`, `.Rmd` et `.Rnw` à R. Les fonctions affectées à un nom sont extraites sous ce nom, et les noms pointés comme `data.frame` restent entiers.
- Le dispatch S3 et S4 (`UseMethod`, `standardGeneric`), la famille apply, `lm`, `predict` et `tryCatch` restent volontairement dans le graphe.
- Environ 800 noms de R de base, de `stats` et de `graphics`, comme `print`, `paste` et `c`, sont filtrés des relations.

## Points d'entrée MCP utiles

- `find_symbol`: Utilisez-le pour le nom d'une fonction de nettoyage, de modélisation ou d'une méthode S3 quand vous avez besoin de la définition et des appelants.
- `dependency_search`: Utilisez la traversée incoming sur une fonction utilitaire pour voir quelles analyses en dépendent avant de modifier sa sortie.
- `get_task_context`: Utilisez-le pour des prompts comme « retrace le chemin du chargement des données brutes jusqu'à la régression finale ».
