2.8 객체의 유형 판별 및 변환
지금까지 R 객체를 알아보면서 is.na()
, is.null()
등 스칼라의 데이터 타입을 확인하는 함수부터 str()
, attributes()
, class()
와 같이 객체의 속성 및 구조에 대해 확인하는 함수들에 대해 간략히 소개함. 앞서 언급한 것 처럼 R은 스크립트 언어이기 때문에 모든 명령 실행이 함수 기반으로 이루어짐. 특정 객제에만 적용할 수 있는 함수들이 있는 반면, 함수를 통해 새로운 속성을 갖는 객제가 생성되기도 함. 그렇기 때문에 함수 적용 또는 적용 후 반환 후 생성된 객체의 타입을 확인하거나 객체의 유형 변환 작업은 R을 통해 데이터를 분석하는 과정에서 빈번하게 발생함.
R에서는 캑체 유형 판별을 위해 is.type_name()
, 객체 타입 변환을 위해 as.type_name()
형태의 함수를 제공함. 지금까지 배운 R 객체에 대한 is.
과 as.
계열 함수는 아래와 같음.
is 계열 함수 | as 계열 함수 | 설명 |
---|---|---|
is.factor() | as.factor() | 주어진 객체가 factor 형인지 판단/변환 |
is.ordered() | as.ordered | 주어진 객체가 순서형 factor인지 판단/변환 |
is.numeric() | as.numeric() | 주어진 객체가 수치형인지 판단/변환 |
is.character() | as.character() | 주어진 객체가 문자형인지 판단/변환 |
is.matrix() | as.matrix() | 주어진 객체가 행렬인지 판단/변환 |
is.array() | as.array() | 주어진 객체가 배열인지 판단/변환 |
is.list() | as.list() | 주어진 객체가 리스트인지 판단/변환 |
is.data.frame() | as.data.frame() | 주어진 객체가 데이터 프레임인지 판단/변환 |
is/as
계열 함수 사용 예시
[1] TRUE
[1] TRUE
[1] FALSE
[1] TRUE
[1] 2 1
[1] 2 1
Levels: 1 2
- 2차원 데이터 객체 유형 판별 및 변환
X <- matrix(rnorm(9), 3)
d <- data.frame(group = rep(LETTERS[1:3], each = 2),
meas = c(mapply(rnorm,
c(2, 2, 2),
c(1, 2, 3),
c(1, 1, 1))))
# 객체 유형 확인
is.matrix(X); is.data.frame(X)
[1] TRUE
[1] FALSE
[1] FALSE
[1] TRUE
group meas
[1,] "A" "2.028870"
[2,] "A" "1.996936"
[3,] "B" "2.835169"
[4,] "B" "1.105901"
[5,] "C" "1.095014"
[6,] "C" "2.927883"
[[1]]
[1] 0.3288415
[[2]]
[1] 0.2479955
[[3]]
[1] -0.7521625
[[4]]
[1] -0.02180829
[[5]]
[1] 1.354002
[[6]]
[1] -0.1578651
[[7]]
[1] -0.3734678
[[8]]
[1] -2.285178
[[9]]
[1] -1.143963
$group
[1] "A" "A" "B" "B" "C" "C"
$meas
[1] 2.028870 1.996936 2.835169 1.105901 1.095014 2.927883