Skip to content

R Tips ― R 코드 작성용 편집기 선택하기

R이 SPSS, SAS 등과 같은 다른 통계 소프트웨어와 다른 점은 그 자체가 객체지향 프로그래밍 언어라는 것입니다. 사용자가 R 문법 구조를 알고 있다면, 얼마든지 자신의 필요에 맞게 다양한 기능을 구현할 수 있는 장점이 있습니다. 이것은 R의 강력한 매력인 동시에 단점이기도 합니다. GUI 환경을 제공하는 다른 통계 계산 도구들과 달리, R은 일일이 문법에 맞춰 코드를 작성해야 하기 때문입니다. 물론, R에서 GUI 환경을 구현하려는 시도가 있지만, 아직 R의 가능성의 극히 일부만 보여주는 수준입니다. 따라서 R을 익숙하게 사용하려면, 텍스트로 된 코드 작성에 친숙해져야 합니다.

코드 작성은 일반적인 글을 작성하는 것과 다르지 않습니다. 모든 언어에는 문법이 있듯, R에도 있는 문법을 준수해서 작성하면 됩니다. R 코드를 작성할 수 있는 소프트웨어는 사실상 무한대에 가깝습니다. 단지 R 문법에 맞는 글을 쓰고, 그 글을 ‘.r’이라는 확장자를 붙여 파일 형태로 저장한 다음, 이를 R에 불러와 실행시키면 되기 때문입니다. 따라서 텍스트를 편집할 수 있는 편집기면 됩니다.

효율적으로 R 코드를 작성하려면 다음 세 가지 기능을 기본으로 지원하는 텍스트 편집기를 선택하는 게 좋습니다.

  1. R 구문 강조 기능
  2. 작성한 코드를 텍스트 편집기 화면에서 직접 실행할 수 있는 기능
  3. 텍스트 탐색 및 치환 기능

1. R 구문 강조 기능

여러 줄로 구성된 코드를 작성하다 보면 크고 작은 실수를 저지르게 됩니다. 중요한 함수 이름을 잘못 쓸 수도 있고, 괄호를 하나 빠트릴 수도 있으며, 쉼표를 찍어야 할 곳에 마침표를 찍을 수도 있습니다. 구문 강조 기능은 이러한 실수를 방지할 수 있게 도와 줍니다. 구문 강조 기능이 있는 편집기는 R에서 자주 쓰이는 중요한 함수, 문장 부호, 숫자 등을 몇 가지 색으로 적절하게 강조해서 작성자가 코드 구조를 한 눈에 파악할 수 있게 해 줍니다.

2. 작성한 코드를 텍스트 편집기 화면에서 직접 실행할 수 있는 기능

R은 명령어를 입력하고 엔터키를 누르는 순간, 곧바로 그 명령어를 해석해 실행하는 인터프리터 언어입니다. 따라서 코드를 한 줄이라도 작성했다면, 그 코드에 해당하는 결과를 곧바로 볼 수 있습니다. 이것은 내가 지금 작성한 코드가 원하는 결과를 가져올지 확신하기 어려울 때 그 코드를 곧바로 실행해 봄으로써 적절한 대응을 할 수 있게 합니다. 이 작업을 하려고 작성하던 코드를 복사해서 R 콘솔 창―R 명령을 수행하고 결과를 볼 수 있는 공간―에 일일이 붙여 넣기 한 다음, 엔터를 쳐서 실행하는 것은 비효율적입니다. R 코드를 작성하면서 언제라도 그 자리에서 방금 작성한 코드, 혹은 특정 부분의 코드를 선택해 실행할 수 있는 게 효율적입니다. 편집기에 이 기능이 있다면 사용자는 단순히 R 콘솔 창에 나타난 결과를 보기만 하면 됩니다.

3. 텍스트 탐색 및 치환 기능

간단한 코드면 눈으로 쉽게 원하는 부분을 찾아 수정하고 치환할 수 있지만, 여러 줄로 이루어진 코드를 일일이 눈으로 찾아 수정하고 치환한다는 것은 분명히 비효율적인 작업이며, 또 다른 오류를 발생시킬 확률이 높습니다. 따라서 편집기에서 탐색과 치환을 일괄적으로 할 수 있는 기능을 지원해 줘야 합니다. 사용자가 원하는 단어와 문구를 입력하면, 해당 부분을 자동으로 찾아주거나 특정 단어와 문구로 바꿔주는 것은 코드 작성과 수정의 효율성을 크게 높여주는 중요한 기능입니다.

 

이러한 세 가지 기능을 지원하는 편집기 중 대표적인 것 세 가지를 소개한다면 다음과 같습니다. 이 세 편집기는 모두 무료로 사용할 수 있습니다.

  1. R 내장 편집기
  2. Emacs
  3. Vim

1. R 내장 편집기

R을 설치하면 기본적으로 제공하는 편집기입니다. 별도로 편집기를 구해 설치할 필요가 없다는 장점이 있습니다. 물론 앞서 말한 세 가지 기본 기능을 지원합니다. R 내장 편집기의 장점이 하나 있다면, 편집기 하단에 함수 인자 구조를 보여준다는 점입니다. 예를 들어 정규분포로부터 난수를 발생시키기 위해 rnorm을 쓰면, 편집기 하단에 이 함수의 기본 인자 구조 ‘rnorm(n, mean = 0, sd = 1)’ 을 보여줍니다.

R default editor

2. Emacs

Emacs는 단순한 텍스트 편집기라기보단, 그 자체가 거대하고 정교한 프로그램입니다. Emacs에 익숙한 분이라면 대부분의 작업을 Emacs 안에서 다 해결할 정도로 확장성과 활용성이 뛰어납니다. Emacs의 탄생지가 인공지능을 연구하는 곳임을 알게 되면 Emacs의 방대함이 이해 가기도 합니다. Emacs에서 R을 이용하기 위해서는 ESS(Emacs Speaks Statistics) 패키지를 설치해야 합니다. ESS를 이용하면, Emacs 상에서 다양한 단축키를 이용, R과 상호작용할 수 있습니다. 자세한 내용은 ESS 프로젝트 공식 홈페이지에 잘 나와있습니다.

3. Vim

Vim은 유닉스 계열 OS에서 많이 쓰이던 vi를 개선―’Vim=Vi IMproved’―한 편집기입니다. Emacs보다 상대적으로 구성이 단순하고, 가벼우며 텍스트 편집기 자체로서의 정체성이 더 뚜렷합니다. Vim에서 R과 상호작용하려면, R.vim이란 스크립트를 설치하면 됩니다. R.vim에 대한 자세한 설명은 공식 배포처를 참조하시기 바랍니다.

 

자신이 애용하는 편집기가 없고, 코드 작성하는 빈도가 낮아 다른 전문적인 편집기를 사용할 필요가 없는 분이라면 R 내장 편집기를 훌륭한 코드 작성 도구로 쓸 수 있습니다. 특히 중요한 함수의 인자를 표시해 주는 기능은 R을 배울 때 많은 도움을 줍니다.

코드 작성 빈도가 높은 분 중에서 특별히 애용하는 편집기가 없는 분이라면 Emacs와 Vim 둘 중 하나를 선택하시길 권해 드립니다. 두 편집기 모두 무료이고, 유닉스 계열(리눅스, Mac OS X 등) OS가 설치된 환경이라면 어디나 기본적으로 설치된 편집기이므로 언제나 자신이 사용하던 환경에서 코드 작성이 가능하기 때문입니다(물론, MS 윈도우에서도 사용할 수 있습니다). 또한, 두 편집기 모두 강력한 키보드 단축키를 지원해서, 코드를 편집하는 동안 키보드에서 손을 떼지 않고 복잡한 편집을 할 수 있습니다. 이 부분은 효율적이고 집중적인 코드 작성 과정에서 굉장히 중요합니다. 코드 작성이란 자신의 논리를 해당 언어 문법에 맞춰 하나하나 키보드로 타이핑하면서 구체화하는 작업입니다. 이 작업을 수행하는 물리적 공간(키보드)을 벗어나지 않는다는 것은, 작업의 일관성과 집중도를 유지하는 데 중요한 이득을 얻는다는 의미입니다. 마우스를 사용하는 순간, 손은 물리적으로 키보드를 떠나게 되고 마우스 동작을 하는 순간, 우리의 뇌는 또 다른 도구를 사용하는 연산을 시작하므로 주의 분산이 어쩔 수 없이 일어납니다. Emacs와 Vim은 편집 시 필요한 99.9% 기능을 키보드만으로 할 수 있게 도와주므로 이러한 주의 분산 여지를 최소화합니다.

문제는 Emacs와 Vim 중 어떤 편집기를 택할 것인가인데, 그것은 전적으로 사용자 자신의 취향에 달려 있습니다. Emacs는 단순 편집기 이상의 강력한 확장성과 활용성을 지원하고 처음 배울 때 Vim보다 한결 더 쉽게 접근 가능하다는 장점이 있습니다. 하지만, 원하는 기능을 구현하기 위해서 점점 더 복잡한 사용 환경과 부딪히게 되며, 키보드 단축키 배치가 Vim보다 효율적이지 못한 단점이 있습니다. Vim은 Emacs보다 처음 배울 때 어려움이 많지만, 일단 한번 손에 익으면 그 상태에서 복잡한 기능도 쉽게 구현할 수 있다는 장점이 있습니다. 언어 개발 환경 별로 다양한 플러그인을 지원하므로 코드 편집 자체에서는 Emacs와 큰 차이 없는 확장성과 편리함을 누릴 수 있습니다. 무엇보다 키보드 단축키 배열이 Emacs보단 더 효율적으로 구성되어 물리적으로 부담 가지 않는 조작을 할 수 있는 장점이 있습니다.

R 내장 편집기, Emacs, Vim 모두 R을 위한 나무랄 데 없는 편집기입니다. 어떤 것이든 자신의 취향과 상황에 맞춰 선택하면 됩니다. 중요한 것은 어떤 편집기를 쓰고 있느냐가 아니라, 어떤 R 코드를 작성하는가입니다. 내 아이디어를 구현하는데 장애가 되지 않고, 도움을 주는 편집기라면, 그것이 그 사람에겐 최고의 편집기일 것입니다. ▩

 

 


* Vim(vi)과 Emacs를 놓고 설전을 벌이는 곳마다 종종 등장하는 재밌는 학습 난이도 비교 그래프가 있습니다. 이 그래프를 약간 바꿔서 R로 재미 삼아 표현해 봤습니다. 재미로 비교해 보세요.

Vim vs Emacs

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*