# Maguyva 的 R 支持：面向分析与包代码的代码图谱

Canonical source: https://maguyva.ai/zh-hans/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 以 AST、符号和图谱支持 R，让 AI 智能体跨越 R 脚本和包追踪函数、S3 与 S4 分派以及模型拟合调用。

## 支持情况速览

- 支持等级: AST 和符号支持
- 编程语言
- 扩展名: .r, .rmd, .rnw
- 真正的 AST 解析，支撑语法感知搜索和结构化上下文。
- 命名符号支撑语义查找和交叉引用。启用关系提取后，即可使用图谱导航。
- 该语言为图谱感知搜索提供符号和关系；支持的边类型随其原生构造而异。
- 同时支持 AST 解析和符号提取。

## 最适合场景

- 拥有大量导出函数、S3 方法和内部辅助函数的 R 包。
- 拆分在多个脚本中、共享数据清洗和建模函数的分析流水线。
- 把 R 代码交给 AI 智能体、需要看清哪些函数为哪些模型提供输入的数据团队。

## 智能体工作流

- 在修改数据清洗函数返回的列之前，找到它的所有调用方。
- 追踪哪些函数通过 `UseMethod` 分派，以及它们的方法在哪里。
- 梳理从原始数据加载到拟合模型的路径。

## R 让浅层 AI 工具栽跟头的地方

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` 的 incoming 方向）
- “哪些函数调用了 `fit_model`？”（`dependency_search`）
- “追踪从 `load_raw_data` 到最终回归的路径。”（`get_task_context`）

## 已知限制

- 约 800 个基础 R、`stats` 和 `graphics` 名称会从关系中过滤掉，例如 `print`、`paste`、`c`、`data.frame`、绘图调用和随机数生成函数。查找它们请使用 `text_pattern_search`。
- R 用普通函数调用来创建类和加载包，因此 `structural_search` 中的 `classes`、`imports` 和 `variables` 预设什么也选不到。请使用 `find_symbol` 和 `text_pattern_search`。
- `.Rmd` 和 `.Rnw` 文件会整体按 R 语法读取，而不是逐个代码块读取，因此 R Markdown 和 Sweave 文档的结果可能不完整。
- R 没有装饰器语法，因此装饰器关系被标记为不适用。

## 后续步骤

通过[快速入门](/zh-hans/docs/quickstart)连接仓库，然后在[兼容性页面](/zh-hans/docs/compatibility)查看支持矩阵。混合数据科学仓库也请阅读 [Python 指南](/zh-hans/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`: 修改辅助函数的输出之前，对它使用 incoming 方向遍历，查看哪些分析依赖它。
- `get_task_context`: 用于“追踪从原始数据加载到最终回归的路径”这类提示词。
