5.2 벡터의 유형

벡터는 그 벡터를 구성하는 요소의 데이터 유형에 따라 벡터의 유형이 정해지게 됩니다.

  • 숫자형 : 숫자형에는 1L, 2L, 3L 등을 요소로 하는 벡터로 정수형(integer)이 있으며, 1.5, 2.5, 3.0 등을 요소로 하는 벡터로 실수형(double)이 있습니다. 그런데 이들은 집합적으로는 숫자형(numeric) 벡터라고 합니다.
  • 문자형 : "대한민국", "홍길동", "5", "2020-01-01" 등과 같이 따옴표 안의 문자들을 요소로 하는 벡터를 문자형(character)이라고 합니다. 특히,
    • "5"의 경우는 보기에는 숫자 5와 같지만, “5” 안에 있으면 단순한 기호로서의 5가 되어 문자로 처리가 됩니다.
    • 또한 "2020-01-01" 의 경우에도 날짜로 보이지만 이는 날짜가 아니고 단순한 문자열입니다. 이를 날짜로 처리하기 위해서는 as.Date() 함수를 이용하여 벡터의 유형을 날짜형으로 강제 변환을 해야 합니다.
  • 논리형 : TRUE, FALSE 등의 논리값을 요소로 하는 벡터는 논리형(logical)입니다.
  • 날짜형 : "2020-01-01" , "Jan-03-2021" 등을 요소로 하는 벡터를 날짜형(Date) 벡터라고 합니다. 이들 날짜형 벡터는 먼저 문자열 벡터로 생성한 다음, as.Date()함수로 변경을 해야 날짜형 벡터로 사용할 수 있습니다.

여기서 특히, integer, double, numeric, character, logical, 그리고 Date 등은 여러분이 꼭 기억해 두기 바랍니다. 이는 벡터의 유형을 확인하고 싶을 때, typeof() 함수를 사용하면 벡터의 유형을 확인하고 출력하는 결과입니다. is.*() 함수를 이용하는 경우에는 *에 해당하는 벡터 유형인지 확인하는 것입니다. 또한, 벡터 유형의 강제변환에 있어서도 as.*() 함수의 *에 사용하여 원하는 벡터형으로 강제변환하게 됩니다.

5.2.1 벡터 유형의 종류

5.2.1.1 숫자형 벡터

숫자형(numeric)의 요소들로 구성된 벡터의 경우

x1 <- c(1, 2, 3)             # 숫자 벡터
x1
## [1] 1 2 3
x2 <- c(1L, 2L, 3L)          # 정수형
x2
## [1] 1 2 3
x3 <- c(2+1i, 3+2i, 4+3i)    # 복소수형 : (참고만 하세요)
x3
## [1] 2+1i 3+2i 4+3i

5.2.1.2 문자형 벡터

문자형(character)의 요소들로 구성된 벡터의 경우, 문자형 요소들을 모두 "" 또는 ‘’로 묶어 줍니다.

y <- c("A", "B", "c")        # 문자 요소는 `""`로 묶는다.
y
## [1] "A" "B" "c"

5.2.1.3 논리형 벡터

논리형(logical)의 요소들로 구성된 벡터의 경우, 논리형의 요소 값은 TRUE, FALSE 또는 T, F로 한다.

논리형 벡터는 0, 1이라는 정수값으로 저장이 됩니다.

z <- c(TRUE, FALSE, T, F)
z
## [1]  TRUE FALSE  TRUE FALSE

5.2.1.4 날짜형 벡터

날짜형(Date)은 별도의 함수를 사용해야 합니다.

today <- Sys.Date()            # Sys.Date() 함수는 오늘 날짜를 반환하는 함수입니다.
today                          # today는 날짜형 벡터가 됩니다.
## [1] "2021-02-08"
date <- c("2020-01-01", "2021-01-01"); date     # date는 문자형 벡터입니다.
## [1] "2020-01-01" "2021-01-01"
date1 <- as.Date(date); date1                   # as.Date() 함수를 이용하여 날짜형 벡터로 강제변환해 줘야 합니다.
## [1] "2020-01-01" "2021-01-01"

날짜형 벡터 date1의 경우는 보기에는 date와 마찬가지로 문자형 벡터로 보이지만, 다음에서 배울 class() 함수를 이용하여 벡터의 클래스를 확인해 보면 서로 다름을 알 수 있습니다.

class(date)                  # "character"로 출력됩니다.
## [1] "character"
class(date1)                 # "Date"로 출력됩니다.
## [1] "Date"