티스토리 뷰
R에 내장되어 있는 디버깅 툴을 살펴보도록 하자.
traceback
간단하게 사용할 수 있는 디버깅 툴로 traceback()이 있다.
traceback()은 함수들을 호출한 콜 스택을 보여주는 것이다.
x 값이 할당되어 있지 않기 때문에 에러가 발생했고,
traceback()으로 함수 호출 스택을 살펴보면 mean() 함수 하나만 나온다.
좀 더 복잡한 선형 회귀 분석을 계산하는 lm() 함수를 살펴보자.
lm(y ~ x)를 처리하기 위해서 eva(), eval(), model.frame() 등을 순차적으로 호출한 것을 알 수 있다.
그러나 traceback은 함수를 어떤 순서로 호출했는지만을 알려주고 있다.
debug
실제로 함수들을 만들었을 때 가장 많이 사용하는 것이 바로 debug와 Browse이다.
debug(lm)를 선언하고 나면, lm()을 실행할 때마다 디버깅 모드로 들어간다.
디버깅 모드에서는 소스 화면에 다음과 같이 해당 함수의 소스가 나타난다.
그리고 콘솔 화면에는 한 라인씩 실행해 볼 수 있는 브라우저 창이 나타난다.
help를 입력하면 사용할 수 있는 명령어를 확인할 수 있다.
n을 입력하면, 한 줄씩 실행하면서 결과를 확인할 수 있다.
s는 해당 소스가 실행하는 함수가 있을 경우, 그 안으로 다시 들어가는 역할을 한다.
c는 전체 소스 실행을 완료하고 종료하는 명령어 이고,
Q는 소스를 실행하지 않고 바로 종료할 사용한다.
중요한 점은 debug(lm)를 실행하고 undebug(lm)를 하지 않으면,
lm()을 실행할 때마다 디버그 모드로 들어가므로 항상 쌍으로 debug(), undebug()를 사용하는 것이 필요하다.
recover
에러가 발생했을 때, 바로 잡기 위해 추천을 해주는 옵션도 존재한다.
options(error = recover)를 지정하면, 선택할 수 있는 다음과 같이 선택할 수 있는 명령이 나타난다.
옵션을 선택하면 Browse가 가능한 디버깅 모드로 들어간다.
빠져 나올 때는 0을 선택하면 된다.
recover 옵션을 제거하기 위해서는 options(error = stop)으로 다시 설정하면 된다.
미니의 R 주요 강좌...
R의 lapply, sapply, vapply를 이해하자~
'Cloud&BigData > R' 카테고리의 다른 글
R 함수에서 캐시 활용하기~ (0) | 2015.10.12 |
---|---|
R 시뮬레이션 - 랜덤 변수 샘플링 (0) | 2015.10.08 |
R의 함수 작성 및 활용~ (0) | 2015.10.07 |
R의 split 활용 (0) | 2015.10.05 |
R의 apply, tapply의 활용법을 알아보자~ (0) | 2015.10.01 |