# R บน Maguyva: กราฟโค้ดสำหรับงานวิเคราะห์และแพ็กเกจ

Canonical source: https://maguyva.ai/th/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 รองรับ R ด้วย AST สัญลักษณ์ และกราฟ เพื่อให้เอเจนต์ AI ติดตามฟังก์ชัน การส่งต่อแบบ S3 และ S4 และการเรียกฟิตโมเดลข้ามสคริปต์และแพ็กเกจ R ได้

## ภาพรวมการรองรับ

- ระดับ: รองรับ AST และสัญลักษณ์
- การเขียนโปรแกรม
- นามสกุลไฟล์: .r, .rmd, .rnw
- การแยกวิเคราะห์ AST จริงสำหรับการค้นหาที่รู้จักไวยากรณ์และบริบทเชิงโครงสร้าง
- สัญลักษณ์ที่มีชื่อป้อนข้อมูลให้การค้นหาเชิงความหมายและการอ้างอิงไขว้ การนำทางกราฟจะใช้งานได้เมื่อเปิดใช้การสกัดความสัมพันธ์
- ภาษานี้ส่งสัญลักษณ์และความสัมพันธ์ไปยังการค้นหาแบบรู้บริบทกราฟ โดยประเภทเอดจ์ที่รองรับจะแตกต่างกันตามโครงสร้างเฉพาะของภาษา
- รองรับทั้งการแยกวิเคราะห์ AST และการสกัดสัญลักษณ์

## เหมาะที่สุดสำหรับ

- แพ็กเกจ R ที่มีฟังก์ชันส่งออก เมธอด S3 และตัวช่วยภายในจำนวนมาก
- ไปป์ไลน์วิเคราะห์ที่แบ่งเป็นสคริปต์ซึ่งใช้ฟังก์ชันทำความสะอาดข้อมูลและสร้างโมเดลร่วมกัน
- ทีมข้อมูลที่ส่งโค้ด 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` ทิศทางขาเข้า)
- "ฟังก์ชันใดบ้างที่เรียก `fit_model`" (`dependency_search`)
- "ติดตามเส้นทางจาก `load_raw_data` ไปจนถึงการถดถอยขั้นสุดท้าย" (`get_task_context`)

## ข้อจำกัดที่ทราบ

- ชื่อจาก R พื้นฐาน `stats` และ `graphics` ประมาณ 800 ชื่อถูกกรองออกจากความสัมพันธ์ เช่น `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 ไม่มีไวยากรณ์เดคอเรเตอร์ ความสัมพันธ์ของเดคอเรเตอร์จึงถูกทำเครื่องหมายว่าไม่เกี่ยวข้อง

## ขั้นตอนถัดไป

เชื่อมต่อรีโพซิทอรีด้วย[คู่มือเริ่มต้นใช้งาน](/th/docs/quickstart) แล้วดูตารางการรองรับได้ที่[หน้าความเข้ากันได้](/th/docs/compatibility) สำหรับรีโพซิทอรีวิทยาการข้อมูลแบบผสม ให้อ่าน[คู่มือภาษา Python](/th/languages/python) ด้วย

## รายละเอียดเอนจิน

- การรองรับ R จับคู่ไฟล์ `.R`, `.Rmd` และ `.Rnw` กับ R ฟังก์ชันที่กำหนดให้กับชื่อจะถูกดึงออกมาด้วยชื่อนั้น และชื่อที่มีจุดอย่าง `data.frame` ยังคงครบถ้วน
- การส่งต่อแบบ S3 และ S4 (`UseMethod`, `standardGeneric`) ตระกูล apply, `lm`, `predict` และ `tryCatch` ถูกเก็บไว้ในกราฟโดยตั้งใจ
- ชื่อจาก R พื้นฐาน `stats` และ `graphics` ประมาณ 800 ชื่อ เช่น `print`, `paste` และ `c` ถูกกรองออกจากความสัมพันธ์

## จุดเริ่มต้น MCP ที่มีประโยชน์

- `find_symbol`: ใช้กับชื่อฟังก์ชันทำความสะอาดข้อมูล สร้างโมเดล หรือเมธอด S3 เมื่อต้องการนิยามและผู้เรียก
- `dependency_search`: ใช้การท่องกราฟขาเข้าเพื่อดูว่างานวิเคราะห์ใดพึ่งพาฟังก์ชันตัวช่วยก่อนเปลี่ยนผลลัพธ์ของมัน
- `get_task_context`: ใช้กับพรอมต์อย่าง "ติดตามเส้นทางตั้งแต่การโหลดข้อมูลดิบไปจนถึงการถดถอยขั้นสุดท้าย"
