# R trên Maguyva: đồ thị mã cho phân tích và gói

Canonical source: https://maguyva.ai/vi/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 hỗ trợ R với AST, ký hiệu và đồ thị, để agent AI có thể lần theo hàm, điều phối S3 và S4, và lời gọi khớp mô hình qua các tập lệnh và gói R.

## Tổng quan hỗ trợ

- Cấp độ: Hỗ trợ AST và symbol
- Lập trình
- Phần mở rộng: .r, .rmd, .rnw
- Phân tích AST thật cho tìm kiếm nhận biết cú pháp và context cấu trúc.
- Các symbol có tên cung cấp dữ liệu cho tra cứu ngữ nghĩa và tham chiếu chéo. Điều hướng graph khả dụng khi bật trích xuất quan hệ.
- Ngôn ngữ này đóng góp symbol và quan hệ cho tìm kiếm nhận biết graph; các loại edge được hỗ trợ thay đổi theo cấu trúc riêng của ngôn ngữ.
- Cả phân tích AST và trích xuất symbol đều khả dụng.

## Phù hợp nhất

- Gói R có nhiều hàm được export, phương thức S3 và hàm trợ giúp nội bộ.
- Pipeline phân tích được chia thành các tập lệnh dùng chung hàm làm sạch dữ liệu và mô hình hóa.
- Nhóm dữ liệu giao mã R cho agent AI cần thấy hàm nào cung cấp dữ liệu cho mô hình nào.

## Workflow agent

- Tìm mọi nơi gọi một hàm làm sạch dữ liệu trước khi đổi các cột nó trả về.
- Lần theo những hàm điều phối bằng `UseMethod` và nơi chứa các phương thức của chúng.
- Lập bản đồ đường đi từ lúc nạp dữ liệu thô tới mô hình đã khớp.

## R làm khó các công cụ AI hời hợt ở đâu

R đặt hàm cơ sở, hàm của gói và hàm của bạn trong cùng một namespace phẳng. Dấu chấm là một phần của tên, không phải truy cập thành viên: `is.na`, `data.frame` và `print.summary_table` là những định danh đơn. Một công cụ đọc `print.summary_table` như một phương thức trên `print` sẽ hiểu sai cấu trúc, còn một công cụ ghi lại mọi lời gọi cơ sở sẽ vùi hàm của bạn dưới `c()` và `paste()`.

Maguyva giữ nguyên tên R và lọc nhiễu từ các hàm cơ sở, để agent thấy những hàm mà phân tích của bạn thực sự phụ thuộc.

## Maguyva trích xuất gì từ R

Maguyva ánh xạ các tệp `.R`, `.Rmd` và `.Rnw` sang R. Hàm được gán cho một tên, như `clean_survey <- function(df)`, được trích xuất với tên đó; hàm ẩn danh không được xem là định nghĩa. Tên có dấu chấm không bao giờ bị tách thành receiver và thành viên.

Một số lời gọi R cơ sở được cố ý giữ lại trong đồ thị vì chúng cho thấy cách mã phân tích kết nối với nhau: điều phối S3 và S4 (`UseMethod`, `standardGeneric`), họ apply (`lapply`, `sapply`, `vapply`, `mapply`), khớp mô hình (`lm`, `predict`, `anova`), nạp gói (`library`, `require`) và xử lý lỗi bằng `tryCatch`.

Đồ thị còn ghi lại việc khởi tạo đối tượng cùng thao tác đọc và ghi.

## Ví dụ prompt cho agent

- "Ai gọi `clean_survey`, và những mô hình nào dùng đầu ra của nó?" (`find_symbol`, sau đó `dependency_search` theo chiều vào)
- "Những hàm nào gọi `fit_model`?" (`dependency_search`)
- "Lần theo đường đi từ `load_raw_data` tới mô hình hồi quy cuối cùng." (`get_task_context`)

## Giới hạn đã biết

- Khoảng 800 tên từ R cơ sở, `stats` và `graphics` bị lọc khỏi quan hệ, như `print`, `paste`, `c`, `data.frame`, các lời gọi vẽ biểu đồ và bộ sinh số ngẫu nhiên. Dùng `text_pattern_search` cho chúng.
- R tạo lớp và nạp gói bằng lời gọi hàm thông thường, nên các preset `classes`, `imports` và `variables` trong `structural_search` không chọn được gì. Hãy dùng `find_symbol` và `text_pattern_search`.
- Tệp `.Rmd` và `.Rnw` được đọc toàn bộ bằng ngữ pháp R, không theo từng khối mã; hãy dự kiến kết quả không đầy đủ với tài liệu R Markdown và Sweave.
- R không có cú pháp decorator, nên các quan hệ decorator được đánh dấu là không áp dụng.

## Bước tiếp theo

Kết nối một kho mã bằng [hướng dẫn bắt đầu nhanh](/vi/docs/quickstart), sau đó xem ma trận hỗ trợ trên [trang tương thích](/vi/docs/compatibility). Với các kho khoa học dữ liệu hỗn hợp, hãy đọc thêm [hướng dẫn Python](/vi/languages/python).

## Chi tiết engine

- Hỗ trợ R bao gồm các tệp `.R`, `.Rmd` và `.Rnw`. Hàm được gán cho một tên được trích xuất với tên đó, và tên có dấu chấm như `data.frame` được giữ nguyên.
- Điều phối S3 và S4 (`UseMethod`, `standardGeneric`), họ apply, `lm`, `predict` và `tryCatch` được cố ý giữ lại trong đồ thị.
- Khoảng 800 tên từ R cơ sở, `stats` và `graphics`, như `print`, `paste` và `c`, bị lọc khỏi quan hệ.

## Điểm khởi đầu MCP hữu ích

- `find_symbol`: Dùng cho tên hàm làm sạch, mô hình hóa hoặc phương thức S3 khi bạn cần định nghĩa và nơi gọi.
- `dependency_search`: Dùng duyệt theo chiều vào để thấy những phân tích nào phụ thuộc vào một hàm trợ giúp trước khi đổi đầu ra của nó.
- `get_task_context`: Dùng cho prompt như "lần theo đường đi từ lúc nạp dữ liệu thô tới mô hình hồi quy cuối cùng".
