8.2 R 바이너리(binary) 파일 입출력
R 작업공간에 존재하는 한 개 이상의 객체들을 저장하고 읽기 위한 함수
R 데이터 관련 바이너리 파일은 한 개 이상의 객체가 저장된 바이너리 파일인 경우
*.Rdata
형태를 갖고, 단일 객체를 저장할 경우 보통*.rds
파일 확장자로 저장*.Rdata
입출력 함수load()
:*.Rdata
파일 읽어오기save()
: 한 개 이상 R 작업공간에 존재하는 객체를.Rdata
파일로 저장save.image()
: 현재 R 작업공간에 존재하는 모든 객체를.Rdata
파일로 저장
# 현재 작업공간에 존재하는 모든 객체를 "output" 폴더에 저장
# output 폴더가 존재하지 않는 경우 아래 명령 실행
# dir.create("output")
ls()
[1] "codebook" "dbp" "dbp2" "def.chunk.hook"
[5] "diab" "hook_output" "input1" "input2"
[9] "plasma" "varname"
save.image(file = "output/all_obj.Rdata")
rm(list = ls())
ls()
character(0)
# 저장된 binary 파일(all_obj.Rdata) 불러오기
load("output/all_obj.Rdata")
ls()
[1] "codebook" "dbp" "dbp2" "def.chunk.hook"
[5] "diab" "hook_output" "input1" "input2"
[9] "plasma" "varname"
# dnp, plasma 데이터만 output 폴더에 sub_obj.Rdata로 저장
save(dbp, plasma, file = "output/sub_obj.Rdata")
rm(list = c("dbp", "plasma"))
ls()
[1] "codebook" "dbp2" "def.chunk.hook" "diab"
[5] "hook_output" "input1" "input2" "varname"
# sub_obj.Rdata 파일 불러오기
load("output/sub_obj.Rdata")
ls()
[1] "codebook" "dbp" "dbp2" "def.chunk.hook"
[5] "diab" "hook_output" "input1" "input2"
[9] "plasma" "varname"
*.rds
입출력 함수readRDS()
/saveRDS()
: 단일 객체가 저장된*.rds
파일을 읽거나 저장- 대용량 데이터를 다룰 때 유용함
read.table()
보다 데이터를 읽는 속도가 빠르며, 다른 확장자 명의 텍스트 파일보다 높은 압축율을 보임
# 대용량 파일 dataset/pulse.csv 불러오기
# system.time(): 명령 실행 시가 계산 함수
system.time(pulse <- read.csv("dataset/pulse.csv", header = T))
사용자 시스템 elapsed
4.970 0.058 5.030
# saveRDS()함수를 이용해 output/pulse.rds 파일로 저장
saveRDS(pulse, "output/pulse.rds")
rm(pulse); ls()
[1] "codebook" "dbp" "dbp2" "def.chunk.hook"
[5] "diab" "hook_output" "input1" "input2"
[9] "plasma" "varname"
system.time(pulse <- readRDS("output/pulse.rds"))
사용자 시스템 elapsed
0.086 0.000 0.087