# Maguyva의 R 지원: 분석과 패키지 코드를 위한 코드 그래프

Canonical source: https://maguyva.ai/ko/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은 기본 함수, 패키지 함수, 여러분의 함수를 하나의 평평한 네임스페이스에 둡니다. 점은 멤버 접근이 아니라 이름의 일부입니다. `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에는 데코레이터 구문이 없으므로, 데코레이터 관계는 적용 대상 아님으로 표시됩니다.

## 다음 단계

[빠른 시작](/ko/docs/quickstart)으로 저장소를 연결한 다음, [호환성 페이지](/ko/docs/compatibility)에서 지원 매트릭스를 확인하세요. 데이터 과학 코드가 섞인 저장소라면 [Python 가이드](/ko/languages/python)도 읽어 보세요.

## 엔진 세부 정보

- R 지원은 `.R`, `.Rmd`, `.Rnw`를 R로 매핑합니다. 이름에 대입된 함수는 그 이름으로 추출되며, `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`: "원시 데이터 로딩에서 최종 회귀까지의 경로를 추적해 줘" 같은 프롬프트에 사용하세요.
