작성자: admin 작성일시: 2016-09-22 11:35:04 조회수: 274 다운로드: 48
카테고리: R 태그목록:

R의 자료형

자료형

지금까지 우리는 변수에 숫자, 문자열, 리스트 등의 값을 마음대로 넣어서 사용해 왔다. 그러나 프로그램이 실행되려면 컴퓨터는 각 변수에 어떤 종류의 값이 들어가 있는지 알아야 한다. 값을 저장하는 방식이나 계산하는 방법이 다르기 때문이다.

이러한 값의 종류를 자료형(data type) 혹은 단순히 타입(type)이라고 한다.

예를 들어 정수인 1과 문자열인 "1"이 컴퓨터에 저장될 때 어느 정도의 메모리를 차지하는지 알아보면 두 값의 저장 방식이 다르다는 것을 알 수 있다. R에서 변수의 메모리 크기를 알기 위해서는 object.size 명령을 사용한다.

In:
a <- 1
object.size(a)
48 bytes
In:
b <- "1"
object.size(b)
96 bytes

R의 자료형

R에서 사용할 수 있는 자료형 중 많이 사용하는 것은 다음과 같다.

  • NULL: 데이터가 없는 경우
  • Logical: 불리언, 참 또는 거짓
  • Int: 정수
  • Double: 부동소수점 실수
  • Complex: 복소수
  • Character: 문자열
  • List: 리스트
  • Closure: 함수

변수나 값의 자료형을 알아보기 위해서는 typeof 명령을 사용하면 된다.

변수가 비어있음을 표시할 때는 NULL 타입을 사용한다.

In:
typeof(NULL)
'NULL'
In:
typeof(TRUE)
'logical'
In:
typeof(1L)
'integer'
In:
typeof(3.14)
'double'

복소수를 사용할 때는 허수부 숫자 뒤에 i문자를 붙인다.

In:
typeof(2 + 3i)
'complex'
In:
typeof("abc")
'character'
In:
typeof(list(A=1, B=2, C=3))
'list'

R에서는 함수도 독자적인 자료형을 가진다. R에서 함수의 자료형 이름은 function 이 아니라 closure 임에 주의한다.

In:
f <- function() {
    return(1)
}

typeof(f)
'closure'

자료형과 클래스의 차이점

R 에서 클래스는 변수가 가지는 속성의 하나이다. 따라서 자료형과 클래스는 같은 값을 가지지 않을 수도 있다.

특히 다음과 같은 점에 주의한다.

  • 부동소수점 실수의 자료형은 double 이지만 클래스는 numeric 이다.
  • 함수의 자료형은 closure 이지만 클래스는 function 이다.
  • matrix, data.frame 등의 클래스 객체나 사용자 정의 클래스의 자료형은 list 이다.
In:
x <- TRUE            ; cat(class(x), typeof(x), "\n")
x <- 1L              ; cat(class(x), typeof(x), "\n")
x <- 3.14            ; cat(class(x), typeof(x), "\n")
x <- "abc"           ; cat(class(x), typeof(x), "\n")
x <- ls              ; cat(class(x), typeof(x), "\n")
x <- matrix(cars)    ; cat(class(x), typeof(x), "\n")
x <- cars            ; cat(class(x), typeof(x), "\n")
logical logical 
integer integer 
numeric double 
character character 
function closure 
matrix list 
data.frame list 

질문/덧글

아직 질문이나 덧글이 없습니다. 첫번째 글을 남겨주세요!