35 R 마크다운 워크플로
앞서 우리는 콘솔에서 대화형으로 작업하는 R 코드를 캡쳐하고, 또 스크립트 에디터에서 동작하는 것을 캡쳐하는 기본적인 워크플로에 대해 살펴보았다. R 마크다운은 콘솔과 스크립트 에디터를 통합하여 대화형 탐색과 장기 코드 캡쳐간의 경계를 모호하게 만든다. 청크 내에서 반복적으로 빠르게 편집하고 Cmd/Ctrl + Shift + Enter 로 재실행할 수 있다. 더 편집할 게 없으면 새로운 청크로 넘어가면 된다.
R마크다운은 설명글과 코드를 긴밀하게 통합하기 때문에 중요하다. 코드를 개발하고 생각을 기록할 수 있기 때문에 훌륭한 분석 노트북이 된다. 분석 노트북의 목표는 물리학의 고전적 실험실 노트북의 그것과 상당 부분 같다. 그 목표는 다음과 같다.
여러분이 무엇을 했는지, 왜 그것을 했는지를 기록한다. 기억력이 얼마나 좋은지와 상관없이, 한 일을 기록하지 않으면 중요한 세부사항을 잊어 버렸을 때가 온다. 잊지 않도록 적어두자!
엄격하게 사고할 수 있게 한다. 진행하면서 생각을 기록하고 반영하기를 계속한다면 강력한 분석을 내놓을 가능성이 크다. 또한 다른사람들과 공유하기 위해 최종적으로 분석 내용을 작성할 때도 시간을 절약할 수 있다.
다른 사람이 작업 내용을 이해하도록 도와준다. 혼자 데이터 분석을 하는 것은 드물고, 팀의 일원으로 일하는 경우가 많다. 실험실 노트북을 사용하면 동료에게 여러분이 한 것뿐만 아니라 왜 했는지도 쉽게 공유할 수 있다.
실험실 노트북을 효과적으로 사용하기 위한 좋은 조언들은 분석 노트북에도 적용할 수 있다. 나의 경험과 콜린 퍼링턴(Colin Purrington)의 실험실 노트북에 대한 조언(http://colinpurrington.com/tips/lab-notebooks)을 통해 얻은 팁은 다음과 같다.
각 노트북에는 설명이 담긴 제목, 연상할 수 있는 파일이름 및 분석 목적을 간략하게 설명하는 첫 번째 단락이 있도록 한다.
-
YAML 헤더 날짜 필드를 이용하여 노트북에서 작업을 시작한 날짜를 기록하라.
date: 2016-08-23
모호성을 피하기 위해 ISO8601 YYYY-MM-DD 형식을 사용하라. 개인적으로 날짜를 이런 식으로 쓰지 않는 사람이라도 이렇게 하라!
분석 아이디어에 많은 시간을 투자했는데 막다른 골목으로 판명되더라도 삭제하지 마라! 간략하게 실패 이유에 대해 메모를 작성하여 노트북에 남기자. 그러면 향후, 분석을 다시 할 때 막다른 골목으로 똑같이 빠지는 것을 피할 수 있다.
데이터 입력을 R 외부에서 하는 것이 일반적으로 좋다. 하지만 소량의 데이터 스니펫을 기록해야 한다면
tibble:tribble()
을 이용하여 명확하게 표시하라.데이터 파일에서 오류를 발견했다면 절대로 직접 수정하지 말고, 코드를 작성하여 값을 수정하라. 왜 수정했는지를 설명하라.
업무를 마감하기 전에, 노트북이 니트가 되는지를 확인하라. (캐싱을 사용한다면 캐시들을 삭제하라.) 그렇게 하면 코드가 머릿속에서 생생할 때 문제를 해결할 수 있다.
코드를 장기 재생산성을 갖도록 (즉, 다음 달이나 내년에 실행할 수 있도록) 하려면 코드가 사용하는 패키지들의 버전을 추적해야 한다. 엄격하게 하려면 packrat(http://rstudio.github.io/packrat/)을 사용하는 것인데, 이는 패키지들을 프로젝트 디렉터리나 체크포인트(https://github.com/RevolutionAnalytics/checkpoint)에 저장한 뒤, 지정된 날짜에 가능한 패키지들을 재설치한다. 빠른 방법은
sessionInfo()
를 실행하는 청크를 포함하는 것인데, 이렇게 하면 패키지를 현재 시점으로 재생성하지는 못하지만, 최소한 어떤 것이었는지를 알 수 있다.여러분은 업무를 하면서 매우 매우 매우 많은 분석 노트북을 생성할 것이다. 어떻게 노트북들을 정리해야 미래에서도 다시 찾을 수 있을까? 노트북들을 개별 프로젝트에 저장하고 좋은 명명 스키마로 정리할 것을 추천한다.