한동안 연구소 일 때문에 Python 를 쓰다가 다시 논문으로 R 코드를 일년만에 들여다 보니, R-Studio 환경과 깔끔한 명령어 타이핑이 주는 이 친숙함으로인해 다시 python 환경으로 돌아가고 싶지 않아졌다.. 나 같은 사용자를 위해
현재 쓰고 있는 우분투 환경에서 최대한 R 과 Python 의 장점을 취할 수 있는 방법을 정리한다.
첫째, 라이브러리간의 dependency 를 유지하면서 프로젝트별로 안정하게 개발하려면 가상환경을 적극 활용한다.
- 몇년 사이에 아나콘다는 정말 많이 무거워졌다. 그래도 dependency 문제로 python 이라면 아나콘다 의 conda 를 통해 라이브러리를 관리하는 것이 이후에 발생가능한 골치아픈 문제를 많이 해결해준다.
- 아나콘다에서 R 의 주요 라이브러리까지 포함하는 R-essential 라이브러리를 설치한다.
- anaconda-navigator 를 이용해서 관리하고 설치하고 런칭할 수도 있다.
- 예를 들어 R 가상 환경을 만들고 , conda activate R_env
- 일단 R 가상환경에서는 Rstudio 에서 패키지 설치시 , install.packages(“라이브러리명”)을 실행하더라도 anaconda conda 프레임에서 동작한다. 문제는 클라우드에서 제공되지 않는 R 라이브러리가 많다는 것이다. 이경우에는 git-hub의 라이브러리를 다운받아야 하는데 devtools::install_gitbuhb(“깃허브명/라이브러리명”)으로 다운을 받는다. 간혹 unzip 시에 tar 디렉토리를 못찾는 경우가 있다. 이 경우는 다음과 같이 리눅스의 디렉토리를 연결시켜준다. :
options(unzip = "internal")
sudo ln -s /bin/tar /bin/gtar 아나콘다 클라우드에 존재하는 라이브러리인 경우 터미널에서 다음과 같이 설치할 수도 있다.conda install -c r r-devtools
둘째, Python 사용이 개발용이 아니라 연구용이라면, 변수에 대한 glimpse, 디렉토리 구조까지 포함하는 Rstudio와 가장 비슷한 환경의 Spyder 의 사용을 고려한다.
- spyder 의 환경은 R-Studio 와 비슷하지만, (1) 로딩시간이 많이 든다 (2) plot 과 관련된 인터페이스는 spyder4 에서 다소 개선되었다고 해도 앞으로 많이 개선되었으면 하는 부분이다 (3) 사용되는 메모리를 보여주는 기능은 훌륭하다. 그런데 메모리가 부족한 환경에서는 plot 을 보여주지도 못한다.
셋째, 우분투환경에서 R에서 한글을 처리한다면 Rstudio 가 아니라 Notebook 을 고려한다.
- Python3 부터는 unicode 가 디폴트로, 이것만으로도 한글처리에 있어서 많은 문제가 해결되었다(euc-KR 비호환 등). R 은 이 부분에서는 대응이 거의 없는 편인듯 하다. 단일 윈도우즈 컴퓨터 환경 사용자라면 이 부분이 얼마나 심각한지 모를 수 있다. 대부분의 처리를 윈도우즈에서 해주기 때문. 문제는 리눅스에서 R 을 사용하는 경우이다. 다행히도 리눅스의 한글처리를 위한 많은 (그리고 정말 고마운) IME가 있다. 덕분에 R 콘솔에서 한글 입력은 문제가 없지만, 우분투에서 실행된 R-studio 에서는 한글입력이 불가능하다. 윈도우즈에서 작업한 RData 역시 우분투 R stdio 에서는 제대로 보이지 않는 경우가 많다.
- 여기에 대한 하나의 솔루션은 Jupyter Notebook 을 사용하여 한글입출력을 브라우저에서 처리할 수 있도록 하는 것..
우분투서버에서 실행해본 결과 R의 실행시간과 IDE 로딩 속도가 python 대비 느리지는 않다 (오히려 빠른 편. ). tensorflow 와 같은 프레임워크가 제공하는 gpu를 통한 메모리 최적화 기능이 가능한지는 확인해봐야 한다.
딥러닝을 포함 엄청난 속도로 기여하는 오픈소스 커뮤니티도 없다. 반면 주기적으로 발표되는 통계 논문과 그에 따른 라이브러리가 쏟아져 나온다. 아나콘다 파운데이션처럼 라이브러리 의존성을 관리해줄 주체도 없다. 이런 오만함에, 소위 비-ascii 처리는 별로 지원해줄 것 같다. R 사용자는 ‘최소한의 도덕성이 없다’고 모 구글 팀장이 말할 정도로, 우리가 프로그래밍에서 기대하는 철학이 별로 안 보인다. 이런 단점에도 불구하고, 해들리윅햄의 독선적이고도 우아한 ggplot 문법, data.frame, tibble, 등 데이터 프레임에 잘 맞는 직관적인 사용법을 가진 라이브러리는 놓치기 싫은 자산이다.