2.9 객체의 유형 판별 및 변환
지금까지 R 객체를 알아보면서 is.na()
, is.null()
등 스칼라의 데이터
타입을 확인하는 함수부터 str()
, attributes()
, class()
와 같이
객체의 속성 및 구조에 대해 확인하는 함수들에 대해 간략히 소개함.
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
계열 함수 사용 예시
<- c("M", "F"); f <- factor(x)
x # x가 문자열인가?
is.character(x)
[1] TRUE
# f가 factor인가?
is.factor(f)
[1] TRUE
#f가 숫자형인가?
is.numeric(f)
[1] FALSE
# f를 수치형으로 변환
<- as.numeric(f)
f is.numeric(f)
[1] TRUE
f
[1] 2 1
# 다시 f를 factor형으로 변환
as.factor(f)
[1] 2 1
Levels: 1 2
- 2차원 데이터 객체 유형 판별 및 변환
<- matrix(rnorm(9), 3)
X <- data.frame(group = rep(LETTERS[1:3], each = 2),
d 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
is.matrix(d); is.data.frame(d)
[1] FALSE
[1] TRUE
# 객체 유형 변환
as.data.frame(X); as.matrix(d)
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"
as.list(X); as.list(d)
[[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