# MaguyvaのR対応: 分析とパッケージのコードグラフ

Canonical source: https://maguyva.ai/ja/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パッケージ。
- データクリーニングとモデリングの関数を共有するスクリプトに分かれた分析パイプライン。
- どの関数がどのモデルにつながるかを把握する必要があるAIエージェントに、Rのコードを渡すデータチーム。

## エージェントワークフロー

- データクリーニング関数が返す列を変更する前に、その呼び出し元をすべて見つける。
- どの関数が `UseMethod` を通してディスパッチし、そのメソッドがどこにあるかを追跡する。
- 生データの読み込みから適合済みモデルまでの経路をマッピングする。

## Rが浅いAIツールをつまずかせるところ

Rは基本関数、パッケージの関数、あなた自身の関数を1つのフラットな名前空間に置きます。ドットはメンバーアクセスではなく名前の一部です。`is.na`、`data.frame`、`print.summary_table` はそれぞれ1つの識別子です。`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にはデコレーターの構文がないため、デコレーターの関係性は適用対象外とされています。

## 次のステップ

[クイックスタート](/ja/docs/quickstart)でリポジトリを接続し、[互換性ページ](/ja/docs/compatibility)で対応マトリクスを確認してください。データサイエンスの混在したリポジトリについては、[Pythonガイド](/ja/languages/python)もご覧ください。

## エンジンの詳細

- Rの対応は `.R`、`.Rmd`、`.Rnw` を対象にします。名前に代入された関数はその名前で抽出され、`data.frame` のようなドットを含む名前は分割されません。
- S3とS4のディスパッチ（`UseMethod`、`standardGeneric`）、applyファミリー、`lm`、`predict`、`tryCatch` は意図的にグラフに残されます。
- `print`、`paste`、`c` のような約800個の基本R、`stats`、`graphics` の名前は関係性から除外されます。

## 役立つMCPエントリーポイント

- `find_symbol`: 定義と呼び出し元が必要なときに、クリーニング、モデリング、S3メソッドの名前で使ってください。
- `dependency_search`: 出力を変更する前に、ヘルパー関数に対してincomingのトラバーサルを使い、それに依存する分析を確認してください。
- `get_task_context`: 「生データの読み込みから最終的な回帰までの経路を追跡して」のようなプロンプトに使ってください。
