Перейти к содержимому
cd /languages
  • Статистические вычисления
  • Программирование
  • Поддержка AST и символов

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

Maguyva поддерживает R с AST, символами и графом, чтобы ИИ-агенты могли прослеживать функции, диспетчеризацию S3 и S4 и вызовы подгонки моделей в скриптах и пакетах R.

Где 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 нет синтаксиса декораторов, поэтому связи декораторов помечены как неприменимые.

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

Подключите репозиторий по быстрому старту, затем изучите матрицу поддержки на странице совместимости. Для смешанных репозиториев по науке о данных прочитайте и руководство по языку Python.

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

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

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

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

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

  • > Поддержка 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

    Используйте для промптов вроде «проследи путь от загрузки сырых данных до итоговой регрессии».