Python에서 rpy2를 이용한 ROjbect 불러오기


rpy2 설치하기 (ubuntu)

R 구 버전 삭제
ubuntu 14.04는 기본적으로 3.0.1 버전을 설치한다.
rpy2는 guswo 3.2 버전 이상부터 동작하므로, 기본 보전인 2013년도 R을 설치하면 진행이 안된다.

우선 현재 구 버전 R이 설치되었다면 아래 방법으로 깨긋이 삭제 한다.

R을 실행해서 관련 package들이 어디에 설치 되어 있는지 확인 한다.

.libPaths() 

그리고 아래의 명령어로 삭제한다.

sudo apt-get remove r-base-core
sudo apt-get remove r-base
sudo apt-get autoremove

확인한 package 경로에 들어가서 남아있는 파일들이 없는지 확인 한다.

R 최신 버전 설치
Youtube 동영상: https://www.youtube.com/watch?v=Nxl7HDUyw0I
원본 방법: https://launchpad.net/~marutter/+archive/ubuntu/rrutter

필자는 동영상 처럼 Update방식으로 할 경우 충돌이나서 이전 버전을 완전히 지우고 새로 설치 하는 방법으로 진행 했다.

# Add PPA:
sudo add-apt-repository ppa:marutter/rrutter 

# Update ubuntu for upgrade:
sudo apt-get update

# install
sudo apt-get install r-base

rpy2 설치 하기
간단히 pip 명령어로 설치 할 수 있다.

pip install rpy2

아래와 같은 에러가 발생하면 R version이 구버전 이거나 중요 시스템 package들이 설치 안되서이다.
rpy2 error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

해결 방법은 아래의 package들을 모두 설치하는 것이다.

sudo apt-get install build-essential autoconf libtool pkg-config python-opengl python-imaging python-pyrex python-pyside.qtopengl idle-python2.7 qt4-dev-tools qt4-designer libqtgui4 libqtcore4 libqt4-xml libqt4-test libqt4-script libqt4-network libqt4-dbus python-qt4 python-qt4-gl libgle3 python-dev

통상 python-dev와 build-essential을 설치하지 않아서 발생 한다고 한다.
참고사이트: http://stackoverflow.com/questions/26053982/error-setup-script-exited-with-error-command-x86-64-linux-gnu-gcc-failed-wit

rpy2로 Rdata 불러오기

import rpy2.robjects as robjects
import pandas.rpy.common as com
import pandas as pd

# check the current working directory 
os.getcwd()

## load .RData and converts to pd.DataFrame
robj = robjects.r.load("seenPhoneStatus10FeaDfList.Rdata")

robjects.r('lapply(seenPhoneStatus10FeaDfList,dim)')

실행 결과

R object with classes: ('list',) mapped to:
<ListVector - Python:0x7f7b64129d40 / R:0x2e68950>
[IntVe..., IntVe..., IntVe..., ..., IntVe..., IntVe..., IntVe...]
  X: <class 'rpy2.robjects.vectors.IntVector'>
  R object with classes: ('integer',) mapped to:
<IntVector - Python:0x7f7b65bf67e8 / R:0x3f4ae18>
[    1038,       10]


+ Recent posts