본문으로 건너뛰기
cd /languages
  • 통계 컴퓨팅
  • 프로그래밍
  • AST 및 심볼 지원

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

Maguyva는 AST, 심볼, 그래프로 R을 지원하여, AI 에이전트가 R 스크립트와 패키지 전반에서 함수, S3 및 S4 디스패치, 모델 적합 호출을 따라갈 수 있게 합니다.

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에는 데코레이터 구문이 없으므로, 데코레이터 관계는 적용 대상 아님으로 표시됩니다.

다음 단계

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

가장 적합한 경우

  • > 내보낸 함수, S3 메서드, 내부 헬퍼가 많은 R 패키지.
  • > 데이터 정제와 모델링 함수를 공유하는 여러 스크립트로 나뉜 분석 파이프라인.
  • > 어떤 함수가 어떤 모델에 입력을 주는지 봐야 하는 AI 에이전트에게 R 코드를 맡기는 데이터 팀.

에이전트 워크플로

  • > 데이터 정제 함수가 반환하는 열을 바꾸기 전에 모든 호출자를 찾습니다.
  • > 어떤 함수가 `UseMethod`를 통해 디스패치하고 그 메서드가 어디에 있는지 추적합니다.
  • > 원시 데이터 로딩에서 적합된 모델까지의 경로를 매핑합니다.

엔진 세부 정보

  • > 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

    "원시 데이터 로딩에서 최종 회귀까지의 경로를 추적해 줘" 같은 프롬프트에 사용하세요.