R 과 MINIO - (2) : R Object 를 MINIO 에 저장 / 다운로드

RStudio 에서 생성된 in-memory R Object 를 .Rdata 파일 로 MINIO 에 저장하거나

MINIO 에 .Rdata 파일로 저장된 R object 를 RStudio 의 memory 로 load 하는 예제 입니다.


R object 를 MINIO 로 저장하기 : s3save

먼저 minio.s3 패키지의 설치AWS 환경변수 설정하기 를 확인합니다.

R 에서 프로그래밍 중에 생성되는 1개 또는 여러 개의 in-memory R-object 는 .Rdata 파일 포맷으로 MINIO 에 저장합니다.

아래 예제는 R 에 내장되어 있는 데이터셋 중 하나인 npk 를 object 로 저장하는 예시입니다.

> str(npk)
 'data.frame':        24 obs. of  5 variables:
 $ block: Factor w/ 6 levels "1","2","3","4",..: 1 1 1 1 2 2 2 2 3 3 ...
 $ N    : Factor w/ 2 levels "0","1": 1 2 1 2 2 2 1 1 1 2 ...
 $ P    : Factor w/ 2 levels "0","1": 2 2 1 1 1 2 1 2 2 2 ...
 $ K    : Factor w/ 2 levels "0","1": 2 1 1 2 1 2 2 1 1 2 ...
 $ yield: num  49.5 62.8 46.8 57 59.8 58.5 55.5 56 62.8 55.8 ...

> npk$N <- as.character(npk$N)
> npk$P <- as.character(npk$P)
> npk$K <- as.character(npk$K)
> str(npk)
'data.frame': 24 obs. of  5 variables:
 $ block: Factor w/ 6 levels "1","2","3","4",..: 1 1 1 1 2 2 2 2 3 3 ...
 $ N    : chr  "0" "1" "0" "1" ...
 $ P    : chr  "1" "1" "0" "0" ...
 $ K    : chr  "1" "0" "0" "1" ...
 $ yield: num  49.5 62.8 46.8 57 59.8 58.5 55.5 56 62.8 55.8 ...


> npk_desc <- summary(npk)
> npk_desc
 block      N                  P                  K                 yield
 1:4   Length:24          Length:24          Length:24          Min.   :44.20
 2:4   Class :character   Class :character   Class :character   1st Qu.:49.73
 3:4   Mode  :character   Mode  :character   Mode  :character   Median :55.65
 4:4                                                            Mean   :54.88
 5:4                                                            3rd Qu.:58.62
 6:4                                                            Max.   :69.50

 # 4분위수 구하기
> npk_q <- quantile(npk$yield, c(0, 0.25, 0.5, 0.75, 1), type=1)
> npk_q
  0%  25%  50%  75% 100%
44.2 49.5 55.5 58.5 69.5

in-memory object 인 npk, npk_desc, npk_q 를 .Rdata 파일로 MINIO 에 저장합니다.

s3save ( npk , npk_desc, npk_q, bucket  =  "demo" , object  =  "npk.Rdata" , use_https  =  F )

MINIO 에 저장된 R object load 하기 : s3load

MINIO 에 저장된 npk.Rdata 파일을 확인합니다.

minio file 01

대화형 분석 RStudio 에서 load 합니다.

# R 의 object 에서 npk_q, npk_desc 가 없음을 확인합니다.
> npk_q
Error: object 'npk_q' not found
> npk_desc
Error: object 'npk_desc' not found

# s3load 로 npk.Rdata 파일에서 object load
> s3load("npk.Rdata", bucket = "demo", use_https = F)
> npk_q
  0%  25%  50%  75% 100%
44.2 49.5 55.5 58.5 69.5
> npk_desc
 block      N                  P                  K                 yield
 1:4   Length:24          Length:24          Length:24          Min.   :44.20
 2:4   Class :character   Class :character   Class :character   1st Qu.:49.73
 3:4   Mode  :character   Mode  :character   Mode  :character   Median :55.65
 4:4                                                            Mean   :54.88
 5:4                                                            3rd Qu.:58.62
 6:4                                                            Max.   :69.50

 # npk 역시 N, P, K 의 타입이 factor 에서 character 로 변경된 dataframe 으로 load 된 것을 확인합니다.
> str(npk)
'data.frame': 24 obs. of  5 variables:
 $ block: Factor w/ 6 levels "1","2","3","4",..: 1 1 1 1 2 2 2 2 3 3 ...
 $ N    : chr  "0" "1" "0" "1" ...
 $ P    : chr  "1" "1" "0" "0" ...
 $ K    : chr  "1" "0" "0" "1" ...
 $ yield: num  49.5 62.8 46.8 57 59.8 58.5 55.5 56 62.8 55.8 ...