R) 객체 용량 확인

R) 객체 용량 확인

분석을 하다 보면 생성한 다루고 있는 객체의 크기를 알아야 할 때가 있다. 특히나 RAM 용량이 작은 머신으로 분석할 경우 이는 더욱더 중요해진다. 이와 관련해서 알아보자.

보통 데이터프레임의 용량은 경험이 많은 분이라면 nrow(), ncol() 함수로 어느 정도 객체의 용량을 가늠할 수 있겠지만, 각 변수에 들어있는 원소의 특성에 따라서 실제 객체 용량 편차가 많이 나기도 하거니와, 데이터프레임이 아닌 리스트나 기타 특수한 객체의 경우 더욱더 그 용량을 가늠하기 어렵다.

RStudio를 사용한다면 다음과 같이 오른쪽 위 Environment 창에서 객체의 용량을 확인할 수 있다.

RStudio 에서의 객체 용량 확인

하지만 언제나 확인 가능한 것도 아니고 GUI가 아닌 CLI환경을 사용하는 경우, 또는 객체 용량에 따라 다른 명령을 내려야 하는 경우 정확하게 함수로 이 정보를 추출할 수 있어야 한다. 그래서 관련 함수 및 문법은 다음과 같다.

format(object.size( 데이터 객체 ), units = "auto")

예를 들어 내장 데이터인 iris의 용량을 확인하면 다음과 같다.

1
2
format(object.size(iris), units = "auto")
## [1] "7.1 Kb"

format() 함수에서 unit 파라미터는 출력할 객체 용량 “단위”를 의미한다. 위 예제에서는 “auto”라고 되어있는데, 이는 함수에서 알아서 해당 객체의 크기에 맞는 단위를 사용하는 것 입니다. 경우에 따라서 “KB”, “MB” 등을 사용할 수 있으니 자세한 내용은 ?format을 입력해서 도움말을 확인하자.

그리고 현재 다루고 있는 모든 객체의 용량 총합을 알고자 한다면 다음과 같이 쓸 수 있다.

1
format(object.size(mget(ls())), units = "auto")

위 코드의 동작을 상세하게 설명하자면, 먼저 ls() 함수로 모든 객체의 목록을 들고오고, get() 함수의 확장 버전인 mget() 함수로 객체 목록 각각의 객체에 해당하는 값을 가져온다. 그리고 object.size() 함수로 전체 객체의 용량을 계산하여 최종적으로 format() 함수가 보기 좋게 단위를 조정해준다.

위 코드를 사용하면 반복문이나 sum() 함수를 사용하지 않고도 한방에 해결 가능하다는 장점이 있다.

마지막으로 앞에서 설명한 내용을 종합하는 코드로 본 포스팅을 마무리 하고자 한다.

1
2
3
4
5
6
7
8
9
10
abc1 = 1:1000000
abc2 = 2:1000000
abc3 = 3:1000000
abc4 = 4:1000000
format(object.size(abc1), units = "auto")
## [1] "3.8 Mb"
format(object.size(get("abc1")), units = "auto")
## [1] "3.8 Mb"
format(object.size(mget(ls())), units = "auto")
## [1] "15.3 Mb"
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×