1. numeric
수를 입력하는 경우 기본적으로 numeric 으로 저장된다.
> calc1 = 1 + 1
> calc1
[1] 2
변수의 데이터 타입을 알고자하는 경우 아래 class() 함수를 이용한다.
> class(calc1)
[1] "numeric"
> numbers1 = c(1, 2, 3)
> numbers1
[1] 1 2 3
> class(numbers1)
[1] "numeric"
위의 예를 보면 하나의 수가 아니므로 벡터가 아닌가라는 생각이 들 것이다.
여기서 트릭은 c() 함수는 값들을 연결해주는 concatenate 함수이라는 점에 있다.
각각의 값이 numeric 이므로 그 값들을 결합한 1 2 3 역시 numeric 이다.
2. integer
> numbers2 = 1:3
> numbers2
[1] 1 2 3
> class(numbers2)
[1] "integer"
위의 예를 방금 살펴본 1) 의 마지막 예와 상충되는 게 아닌가 하는 생각을 할 수 있다.
c() 함수로 연결한 경우는 numeric 이고 방금의 경우는 integer 인가?
그 의문에 대한 답은 numeric 클래스가 integer 클래스를 포함하는 더 넓은 개념이라는 데서 찾을 수 있다.
integer 타입으로만 연결된 값에 대해서는 R 프로그램은 numeric 보다 더 상세한 데이터 타입인 integer 로 저장한다.
그 배경에는 더 디테일한 데이터 타입을 선택할수록 그 값을 저장하는 데는 메모리가 덜 소모되기 때문이다.
그러면 앞선 예에서 numbers1 은 왜 integer 로 저장하지 않았느냐는 의문을 가질 수 있다.
그 이유는 c() 함수를 이용해서 값을 입력했기 때문이다.
R 은 c() 함수에 들어가는 값에 대해서는 체크하지 않는다.
어떤 수라도 넣을 수 있도록 단순히 numeirc 이라고 가정한다.
> numbers3 = 1.1:3
> numbers3
[1] 1.1 2.1
> class(numbers3)
[1] "numeric"
이 경우에는 R 은 입력된 수가 integer 가 아닌 것을 알고 좀 더 넓은 범위의 클래스인 numeric 으로 할당한다.
3. character
텍스트가 저장되는 character 타입에 대해 살펴보자.
> char1 = "Hello World!"
> char1
[1] "Hello World!"
> class(char1)
[1] "character"
앞에서 본 것처럼 c() 로 결합된 값 역시 character 클래스에 속한다.
> char2 = c("red","green","blue")
> class(char2)
[1] "character"
수와 텍스트가 결합된 경우에는 모두 character 타입으로 변환된다.
> combined1 = c(1, "test", 3.3)
> combined1
[1] "1" "test" "3.3"
> class(combined1)
[1] "character"
이제 위의 1 또는 3.3 은 더 이상 수가 아니다. 더하거나 빼거나 등의 연산을 이제 수행할 수 없다.
'프로그래밍 Programming' 카테고리의 다른 글
R 프로그래밍 - Data Types (Converting/Using) (2) | 2014.08.02 |
---|---|
R 프로그래밍 - Data Types (logical, vector, matrix, array, data.frame, list) (0) | 2014.08.02 |
R 프로그래밍 - Manipulation (0) | 2014.07.16 |
R 프로그래밍 - Matrices(행렬) (5) | 2014.07.11 |
R 프로그래밍 - 벡터(Vector) (0) | 2014.07.11 |