728x90

R은 통계프로그래밍 언어로 일반인이 사용하기 쉽게 만든 언어이다.

그러나 필자는 프로그래머이고 비 프로그래머의 인식으로 접근하기 힘든면이 있다.

강의 또한 그러하다. 강의 곳곳에 프로그래머적인 시선이 들어있으니 참고하여 필요없으면 넘겨라.


참고:

[개발환경 셋팅하기]R설치 및 환경변수 등록-(1)

[개발환경 셋팅하기]RStudio설치-(2)

[개발환경 셋팅하기]RStudio프로젝트 만들기-(3)


지금까지는 외부 데이터 포멧을 읽고 쓰는것을 했다.

이제하는것은 조금은 다른 이야기인데 R의 데이터를 읽고 쓰는것이다.

즉 R의 data,value,function들을 읽고 쓸것이다.

아래와 같은 코드가 있다고 가정을하자.


library('jsonlite')

x <- c(1,2,3,4,5)

y <- data.frame(fromJSON('export.json'))

z <- function(){

  print(x)

  print(y)

  return('happy')

}


위의 코드를 실행하고 RStudio의 섹션을 보면 아래와 같이 나타난다.



이 데이터는 RStudio가 돌아가고있는 메모리상의 데이터이다.

즉 실체화된 데이터는 아니다.

그러나 R에서는 이러한 메모리에 들어있는 data,values,function등을 외부파일로 저장하는 경우가 왕왕있다.

아무래도 R에최적화된 방식으로 저장을 하는것 같다.

그래서 다른언어에서는 지원하지 않는 것을 몇개의 명령어를 지원한다.


변수관련 명령어


ls - 현재 메모리상에 올라와있는 모든 변수들을 벡터로 반환한다.

rm - 해당 변수를 지운다.


둘은 자주쓰이는데 사실 변수를 지우는건 어찌보면 메모리를 수동해제하라고 생각해주면되긴한다.

근데 중요한건 그런것 보단 사용자가 느끼기에 rm이 중요한 이유는 나중에 데이터를 저장할때 필요없는것을 지워버리면 되기 때문이다.


print(ls())

rm(x)


이를 사용해보면 메모리 상에서 x변수는 사라지며 모든 변수를 출력한다.

R에서 메모리는 단순히 메모리가 아니라 중요한 데이터라고 볼 수 있다.

이런데이터를 외부에 저장할 수 있다면 더더욱 좋을것이다.

이때 저장 포맷은 보통 .data나 .Rdata를 쓴다. 뭐가 더 좋은지 모르겠는데 둘다 필자가 아직까지 경험해본바로는 같았다.


이상태에서 외부에 파일을 써보자.


save(list =  ls(),file = 'extern.data')

rm(list = ls())


쓰는 방법은 위와 같다. 만약 여러개를 쓴다면 list=속성으로 순환객체를 넣어주자.

만약 일일히 넣을거라면 아래처럼하라


save(y,z,file = 'extern.data')

rm(list = ls())


이제 rm으로 모든 변수를 지웠으므로 변수는 말끔히 사라졌다.

이제 외부 data를 로딩해보자.


load('extern.data')

z()


이제 로딩이 된다. 다시 변수들은 활성화된다.



또한 z함수가 실행되는걸 확인할 수 있다.



R데이터를 저장하는 확장자는 data를 사용하던 Rdata를 사용하던 필자가 쓸때는 똑같이 작동을 했다.

둘은 저장은 확실하게 다르게 되는데 무슨차이점이 있는지 검색해도 나오질 않는다.

알아서 잘 사용하길 바란다.


'Programming > R' 카테고리의 다른 글

[R-20]그래프 출력,화면 분할(plot,screen)  (0) 2017.11.19
[R-19]팩터(factor)  (0) 2017.11.19
[R-17]파일 읽기,쓰기(json)  (0) 2017.11.19
[R-16]파일 읽기(xml)  (0) 2017.11.19
[R-15]파일 읽기,쓰기(csv)  (0) 2017.11.19

+ Recent posts