R의 객체

r, python 다차원 데이터 다루기

cj92 2021. 9. 30. 00:17

R을 python과 비교했을 때, R의 장점은 save, load함수로 거의 대부분의 객체를 저장할 수 있다는 장점이 아닐까 싶다. 

 

python은 pickle 버전에 따라서 pickle로 저장했어도 못불러오는 경우도 존재하니 말이다. 

 

예제를 위해 R에서 iris 자료를 저장해보자.

 

save(iris, file='iris.rda')

 

자 이제 이 iris를 python에서 불러보자.

import rpy2.robjects as robjects
robjects.r['load']('iris.rda')

iris = robjects.r['iris']
iris

 

iris자료가 잘 불러와지는 것을 확인할 수 있다.

 

이제 python에서 다차원 자료를 다룰 때 많이 쓰는 numpy 자료를 저장해보자.

 

import rpy2.robjects.numpy2ri
import numpy as np
iris = np.array(iris)

ro=rpy2.robjects.numpy2ri.numpy2ri(iris)
robjects.r.assign("iris", ro)
robjects.r("save(iris, file='iris_np.rda')")

 

R의 save나 load의 장점은 다차원 자료가 저장하기 쉽다는 것이다.

 

아래처럼 3차원 이상의 자료도 편하게 저장 가능하다.

 

robjects.r['load']('iris_np.rda')
iris=robjects.r['iris']
#save
ro=rpy2.robjects.numpy2ri.numpy2ri(np.array([iris,iris]))
robjects.r.assign("iris", ro)
robjects.r("save(iris, file='iris_np_3d.rda')")
#load
robjects.r['load']('iris_np_3d.rda')