# Maguyva 的 R 支援：面向分析與套件程式碼的程式碼圖譜

Canonical source: https://maguyva.ai/zh-hant/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-hant/docs/quickstart)連接儲存庫，然後在[相容性頁面](/zh-hant/docs/compatibility)檢視支援矩陣。混合資料科學儲存庫也請閱讀 [Python 指南](/zh-hant/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`: 用於「追蹤從原始資料載入到最終迴歸的路徑」這類提示。
