코끼리를 냉장고에 집어넣으려면 어떻게 해야 할까요? 쉽게 생각하면 코끼리를 냉장고에 넣으려면 아래와 같이 하면 됩니다.
1. 냉장고 문을 엽니다.
2. 코끼리에게 "냉장고에 들어가"라고 이야기합니다.
3. 코끼리가 냉장고에 다 들어가면, 코끼리 꼬리가 냉장고 문에 끼이지 않도록 조심하며 냉장고 문을 닫습니다.
설명을 보면, 뭔가 이상하다고 생각하실 텐데요. 일반적인 크기의 냉장고는 코끼리가 쉽게 들어갈 수 있는 크기가 아니기 때문에 상식적으로 안된다고 생각하기 때문입니다.
또 다른 질문인데요. 선물을 사고, 선물을 할 때 우리는 어떻게 할까요? 실생활에서 우리는 누군가에게 무엇인가를 선물할 때 선물하려는 물건의 크기에 맞는 선물 상자에 선물을 넣고, 예쁜 포장지로 선물을 포장하고 선물을 줍니다.
계속해서 냉장고의 크기와 선물상자의 크기에 대해 이야기를 하고 있는데, 이렇게 이야기를 드리는 이유는 R에서 사용하는 데이터 타입(자료형)을 설명하기 위해서입니다.
R에서는 상황에 따라 편리하게 사용되는 값(데이터)이 여러 종류가 존재합니다. 이 여러 형태의 값들을 프로그래밍에서는 데이터 타입(데이터 형, 자료형)이라고 부릅니다. 위에 설명에서 냉장고의 크기, 선물 상자의 크기는 대상의 크기에 맞게 정해지는 것처럼 데이터를 담아내는 상자도 테이터 타입에 맞게 달라집니다. 다만, R 프로그램은 사용자가 사용하기 편리하게 디자인된 언어이기 때문에 사용자가 이를 인식하지 않고 쉽게 사용할 수 있습니다.
하지만 조금 더 깊이 이해하면 이후 다른 언어를 익히시는데 도움이 되기 때문에 이번 포스팅에서는 R에서 사용하는 기본적인 데이터 타입이 무엇이 있는지 알아보고, 그것이 내부적으로 어떻게 동작되는지 포스팅을 통해서 설명드리도록 하겠습니다.
| 기본 테이터 타입(자료형)
# 숫자형
이전 포스팅에서 설명드린 'a <- 1'이라는 문장에서 '1'은 숫자형입니다. 그래서 자료형이 숫자형이기 때문에 산술 연산이 가능한 것입니다.
a <- -1 # a변수에 -1값을 할당
b <- 1 # b변수에 1값을 할당
c <- a+b # a변수와 b변수에 저장된 값을 계산하고 c변수에 저장
숫자형을 쉽게 설명드리면 숫자를 다룰 수 있는 자료형이라고 생각하시면 됩니다. 흔히 '숫자형 데이터'라고 이야기합니다. 숫자형은 정수형과 실수형이 있습니다.
# 문자형
변수에는 숫자뿐만 아니라 문자도 사용할 수 있습니다. 문자를 변수에 저장하기 위해서는 '(쿼테이션)이나 "(더블 쿼테이션)로 문자를 감싸 줘야 합니다. 'a'라는 문장을 a라는 변수에 집어넣기 위해서는 다음과 같이 표현을 합니다.
a <- 'a'
a <- "a"
위의 코드에서 문자 a를 '(쿼테이션)이냐 "(더블 쿼테이션)이냐로 감쌌느냐만 다를 뿐 두 코드는 동일한 의미를 가집니다.
쿼테이션(더블 쿼테이션 포함)을 사용하면 'a'라는 한자의 문자 말고 'hello'라는 길이가 긴 문자열도 넣을 수 있습니다. (문자열이라는 것은 여러 개의 문자가 이어져 있는 것을 의미합니다)
b <- "hello" # b변수에 "hello" 문자열을 할당
# 논리형
어떠한 결과가 맞는지(TRUE) 틀린 지(FALSE)를 판단할 때가 있는데, 이때 사용되는 것이 논리형입니다. 빠른 이해를 위해서 RSudio, console 창에서 다음과 같이 테스트해 보시길 바랍니다.
TRUE
FALSE
TRUE == TRUE
FALSE == FASLE
TRUE == FASLE
'[Ctrl] + [L]' 키를 눌러 console 창에 있는 문자들을 클리어 시킨 뒤, 위의 코드를 입력해 봅니다.
이후에 설명을 드리겠지만 실습 코드에서 '=='가 생소하실 텐데요. 이것은 '비교 연산자'로 두 값이 같은지 다른지를 비교하는 것입니다. 만약 비교하는 두 값이 같다면 TRUE를 반환하고, 다르면 FALSE을 반환합니다.
테스트 한 값 중에서 'TRUE == TRUE', 'FALSE == FALSE'의 경우 비교하는 두 값이 같기 때문에 'TRUE'를 반환하고, 'TRUE == FALSE'인 경우 비교하는 두 값이 다르기 때문에 'FASLE'를 반환한 것입니다.
비교 연산자와 논리형에 대해 조금 더 이해를 돕기 위해 console에서 아래의 코드를 실행해 보시길 바랍니다.
1 == 0
1 == 1
1 == TRUE
1 == FALSE
0 == TRUE
0 == FALSE
2 == TRUE
'=='는 두 값을 비교한다고 말씀드렸듯이, '1과 0'을 비교하여 두 값이 다르기 때문에 'FALSE'를 반환을 한 것을 볼 수 있습니다. 코드를 실행하면서 의문점이 드셨을 부분이 있으실 텐데요. 코드에서 직접 확인해 보신 것처럼 R에서 'TRUE는 1', 'FALSE는 0'값을 가지고 있습니다.
그렇기 때문에 1과 TRUE를 비교하는 '1 == TRUE'의 결과가 TRUE로, 0과 FALSE를 비교하는 '0 == FALSE'의 결과가 TRUE가 나옴을 보실 수 있습니다.
일반적으로 사용되지는 않는 문장인데, TRUE가 1 값을 가지고 있기 때문에 아래와 같이 TRUE를 가지고 산술 연산을 할 수 있습니다.
1 + TRUE # 1에 TRUE값을 더한다
| 조금 더 깊게 이해하기
변수의 자료형은 어떤 값을 저장하는가에 따라 자동적으로 바뀝니다. 예를 들어 a변수에 10을 넣고, 다시 'a'라는 문자를 집어넣는다고 가정하면, 최종적으로는 a 변수에는 'a'라는 문자열이 저장되게 됩니다. 이를 자세히 설명드리면, 다음과 같습니다.
a <- 1 # a변수에 숫자 1을 할당합니다
숫자형을 담을 수 있는 숫자형 상자(메모리)를 만들고 1 값을 저장합니다. 이후에 숫자형 상자에 'a'라는 이름표를 붙여 상자를 찾기 쉽게 합니다.
a <- 'a' # a변수에 문자'b'를 넣습니다.
이름표 a가 붙어 있는 숫자형 상자에 문자 'b'를 넣기 위해 기존에 들어 있는 1 값을 꺼냅니다.
이름표 a가 붙어 있는 숫자형 상자에 문자 'b'를 집어넣기 위해 문자가 들어갈 수 있는 '문자형 상자'로 바꿉니다.
문자형 상자로 바뀐 이름표 a가 붙어 있는 문자형 상자에 문자 'b'를 집어넣습니다.
※ 위의 설명은 변수에 할당된 자료형과 다른 자료형이 할당될 때 할당되는 과정을 설명하기 위한 것으로 프로그램 내부에서 처리되는 과정과 설명이 100% 일치하지는 않습니다. 다만 기존과 다른 데이터 형이 할당될 때 어떠한 과정을 거치는지 이해하기 쉽도록 설명드리기 위함인 참고용으로 보시길 바랍니다.
긴 글 읽어 주셔서 감사합니다.
'프로그래밍언어(코딩) > R' 카테고리의 다른 글
[R 공략집] 다양한 벡터 생성 방법 (0) | 2020.09.08 |
---|---|
[R 공략집] 벡터 (1) | 2020.08.20 |
[R 공략집] 기본 연산자 (0) | 2020.08.17 |
[R 공략집] 변수 사용하기 (0) | 2020.08.16 |
[R 공략집] RStudio 기본 사용법 (0) | 2020.08.15 |
댓글