# R в Maguyva: графы кода для аналитики и пакетов

Canonical source: https://maguyva.ai/ru/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 поддерживает R с AST, символами и графом, чтобы ИИ-агенты могли прослеживать функции, диспетчеризацию S3 и S4 и вызовы подгонки моделей в скриптах и пакетах R.

## Сводка поддержки

- Уровень: Поддержка AST и символов
- Программирование
- Расширения: .r, .rmd, .rnw
- Настоящий AST-разбор для синтаксически осведомлённого поиска и структурного контекста.
- Именованные символы обеспечивают семантический поиск и перекрёстные ссылки. Навигация по графу доступна, когда включено извлечение связей.
- Этот язык добавляет символы и связи в поиск с учётом графа; поддерживаемые типы рёбер зависят от присущих ему конструкций.
- Доступны и AST-разбор, и извлечение символов.

## Лучше всего подходит

- Пакеты R с множеством экспортируемых функций, методов S3 и внутренних вспомогательных функций.
- Аналитические конвейеры, разбитые на скрипты, которые разделяют функции очистки данных и моделирования.
- Команды данных, передающие код на R ИИ-агентам, которым нужно видеть, какие функции питают какие модели.

## Сценарии работы агента

- Найти все вызовы функции очистки данных, прежде чем менять возвращаемые ею столбцы.
- Проследить, какие функции диспетчеризуют через `UseMethod` и где находятся их методы.
- Составить карту пути от загрузки сырых данных до подогнанной модели.

## Где R сбивает с толку поверхностные ИИ-инструменты

R помещает базовые функции, функции пакетов и ваши функции в одно плоское пространство имён. Точки являются частью имени, а не доступом к члену: `is.na`, `data.frame` и `print.summary_table` представляют собой единые идентификаторы. Инструмент, который читает `print.summary_table` как метод у `print`, неверно понимает структуру, а инструмент, записывающий каждый базовый вызов, хоронит ваши функции под `c()` и `paste()`.

Maguyva сохраняет имена R целиком и отфильтровывает шум базовых функций, чтобы агент видел функции, от которых действительно зависит ваш анализ.

## Что Maguyva извлекает из R

Maguyva сопоставляет файлы `.R`, `.Rmd` и `.Rnw` с R. Функции, присвоенные имени, например `clean_survey <- function(df)`, извлекаются под этим именем; анонимные функции не считаются определениями. Имена с точками никогда не разбиваются на получателя и член.

Некоторые базовые вызовы R намеренно оставлены в графе, потому что показывают, как связан аналитический код: диспетчеризация S3 и S4 (`UseMethod`, `standardGeneric`), семейство apply (`lapply`, `sapply`, `vapply`, `mapply`), подгонка моделей (`lm`, `predict`, `anova`), загрузка пакетов (`library`, `require`) и обработка ошибок через `tryCatch`.

Граф также фиксирует создание экземпляров, чтение и запись.

## Примеры промптов для агентов

- «Кто вызывает `clean_survey` и какие модели используют её результат?» (`find_symbol`, затем `dependency_search` по входящим связям)
- «Какие функции вызывают `fit_model`?» (`dependency_search`)
- «Проследи путь от `load_raw_data` до итоговой регрессии.» (`get_task_context`)

## Известные ограничения

- Около 800 имён из базового R, `stats` и `graphics` отфильтрованы из связей, например `print`, `paste`, `c`, `data.frame`, вызовы построения графиков и генераторы случайных чисел. Для них используйте `text_pattern_search`.
- R создаёт классы и загружает пакеты обычными вызовами функций, поэтому пресеты `classes`, `imports` и `variables` в `structural_search` ничего не выбирают. Используйте `find_symbol` и `text_pattern_search`.
- Файлы `.Rmd` и `.Rnw` читаются целиком грамматикой R, а не по фрагментам; для документов R Markdown и Sweave результаты могут быть неполными.
- В R нет синтаксиса декораторов, поэтому связи декораторов помечены как неприменимые.

## Следующие шаги

Подключите репозиторий по [быстрому старту](/ru/docs/quickstart), затем изучите матрицу поддержки на [странице совместимости](/ru/docs/compatibility). Для смешанных репозиториев по науке о данных прочитайте и [руководство по языку Python](/ru/languages/python).

## Детали движка

- Поддержка R сопоставляет файлы `.R`, `.Rmd` и `.Rnw` с R. Функции, присвоенные имени, извлекаются под этим именем, а имена с точками вроде `data.frame` остаются целыми.
- Диспетчеризация S3 и S4 (`UseMethod`, `standardGeneric`), семейство apply, `lm`, `predict` и `tryCatch` намеренно оставлены в графе.
- Около 800 имён из базового R, `stats` и `graphics`, например `print`, `paste` и `c`, отфильтрованы из связей.

## Полезные точки входа MCP

- `find_symbol`: Используйте для имени функции очистки, моделирования или метода S3, когда нужны определение и вызовы.
- `dependency_search`: Используйте обход входящих связей, чтобы увидеть, какие анализы зависят от вспомогательной функции, прежде чем менять её результат.
- `get_task_context`: Используйте для промптов вроде «проследи путь от загрузки сырых данных до итоговой регрессии».
