본문 바로가기

Data analysis story

[R프로그래밍] R의 기본자료형

안녕하세요 여러분! 저번 시간에 R의 기본 연산과 기초 문법 일부에 대해 다루어 보았는데요!

 

그렇다면 오늘은 이 R언어는 어떤 자료형을 가지고 있는지 기본자료형들에 대해서 알아보도록 하겠습니다.

 

일단 표 형식으로 오늘 다룰 기본자료형을 Preview해볼게요!

수치형(numeric)

수치형은 숫자로서 정수와 실수로 나눌 수 있는데요!

정수(integer)2,5,0,-7과 같은 수들

실수(double)0.7, 1/2, 32와 같은 수들

을 말합니다. 그러면 변수를 지정해서 이 수치 데이터들을 넣어볼까요? 자료형을 알아보는 함수는 class() 함수입니다.

R에서는 허수가 아닌 모든 수를 numeric(실수)으로 선언하기 때문에 integer형으로 선언하기 위해서는 위의 코드처럼 숫자의 L을 붙여줘야 합니다.

 

그러면 이제 이 수치형 데이터를 산술할 때 쓰는 주요 연산자에 대해서 알아보겠습니다!

저번 시간에 사칙연산과 그 외의 연산들을 배우면서 이 기호들을 배웠었죠?

(잘 모른다면 저번 포스팅{[R프로그래밍]- 기초 연산과 기본 문법 편}을 참조해주세요!

저번 포스팅을 보셨다면 이런 연산에 우선순위가 있는 것도 다 아시죠?

 

수는 정말 작은 수부터 큰 수까지 다양한데 그러면 이런 수들을 어떻게 표현될 수가 있을까요?

1000000000000이나 0.00000000000000001과 같은 숫자 말이에요!

10000100000, 그리고 1000000이란 숫자를 콘솔 창에 찍어볼까요?

10000은 우리가 아는 그대로 출력이 되는데 1000001000000은 다르게 표현이 되네요!

다른 설정을 해주지 않는다면 기본적으로 R에서는 10000까지의 숫자는 그대로 출력하지만 넘어가는 숫자는 이렇게 e를 사용해서 표현합니다.

 

1e+051x105를 나타내는 표현입니다!

그렇다면 10000보다 작은 숫자들도 이런 방식으로 표현이 가능할까요?

 

콘솔 창에

이렇게 쳐주면 10, 100, 1000, 1000이라는 숫자를 출력한답니다! 50을 출력하고 싶다면 앞의 숫자를 1대신 5로 바꿔주면 되겠죠?

 

그렇다면 엄청 작은 수 예를 들어 0.00001는 어떻게 표현이 될까요?

앞서 표현에서 무엇만 달라졌나요? ‘+’기호가 ‘-‘기호로 바뀌었죠?

‘-‘기호를 써주면 소수점을 나타내줍니다.

마찬가지로 0.1, 0.001, 0.0001도 이런 표현식으로 표현할 수가 있네요1

그런데 만약 105제곱도 1e+05가 아닌 100000로 출력하고 싶을 땐 어떻게 해야할까요?

두번째 줄에서 보이듯이 100000e를 사용한 기호로 표현이 되는데 options이라는 함수를 사용하고 scipen이란 인수에 1을 넣어주면 5자리까지 그냥 100000로 출력할 수 있게 되고 106제곱부터 다시 e를 사용한 표현식으로 표현되는 것을 알 수 있네요!

 

그냥 숫자 그대로 출력되는 자릿수를 늘리고 싶다면 scipen인수에 넣은 숫자를 늘려가면 되겠죠?

 

마지막으로 어떤 문자 데이터를 숫자 데이터로 바꾸고 싶다면 어떻게 해야할까요?

 

문자 데이터는 곧바로 뒤에서 더 자세히 배울꺼지만 “”기호를 사용하여 입력하잖아요!

위의 예에서 볼 수 있듯이 따옴표를 사용해서 입력하면 그 자료형은 문자 데이터가 됩니다!

하지만 23을 더하고 싶다면요? 여기서 한번 더해볼까요?

오류가 발생하고 맙니다. 문자와 문자 데이터는 더할 수 없잖아요! 하지만 이 두 변수를 꼭 더해야 한다면??

 

그럴 땐 숫자형으로 강제로 바꿔주는 함수가 존재합니다.

위의 예시를 보면 as.numeric이란 함수로 character a,bnumeric으로 바꿔준 후 다시 a,b 변수에 넣어주었습니다. 그리고 덧셈을 이용해 계산하니 우리가 원하는 결과값이 나오네요!

 

as.numeric함수를 쓰고 나서 다시 그 변수에 할당해야만 변수끼리 더했을 때 원하는 값을 얻을 수 있어요!

 

문자형(character)

문자형은 문자와 문자열로 구성된다고 할 수 있는데요!

문자와 문자열을 입력할 때는 작은 따옴표나 큰 따옴표로 꼭 감싸주셔야 합니다!

예시를 보죠!

이렇게 문자들을 넣어봤는데요! 작은 따옴표나 큰 따옴표로 감싸주지 않게 되면

변수로 인식하여 오류가 발생합니다.

이제 조금 더 긴 문자열들을 집어넣어볼게요!

작은 따옴표나 큰 따옴표로 문자열을 감싸고 출력한 후 자료형을 확인해봤더니 character가 나오네요!!

 

앞서 as.numeric() 함수를 사용해서 문자를 숫자로 강제로 변환시켜 보았는데요! 그러면 숫자를 문자로 강제로 변환시켜볼 수는 없을까요? 당연히 됩니다! 이때는 as.character()함수를 사용합니다. 예시를 볼게요!

논리형(logical)

논리형 데이터에는 TRUE, FASLE 이 두가지가 존재합니다. 아니면 거짓. 개의 만을 가집니다. R에서는 True 이렇게 대문자와 소문자를 혼합하여 쓰면 논리값으로 인식되지 않습니다. 혹은 T, F라고 입력해도 논리값으로 인식됩니다. 예를 봅시다!

숫자에서는 0 F값을 나머지 수는 T값을 가지는데요!

집합 연산자인 “&” 기호{{교집합 구하기} “|” 기호{합집합 구하기} 사용하면

이런 논리값을 얻을 수가 있습니다!

논리 값과 논리값에 “&” “|” 사용해도 되는데요

이렇게 말이죠!

 

복소수형(complex)

복소수는 실수와 허수의 합의 꼴로서 나타내는 수입니다. 예시를 통해 확인합시다!

복소수도 numeric 같은 연산들을 적용할 있습니다.

또한 복소수와 numeric 더하고 있습니다!

 

⑤로형(raw)

로형은 컴퓨터 내부적으로 저장되는 형태를 말한다.

일단 우리가 쓰는 “Hello”라는 문자열을 컴퓨터 내부적으로 어떻게 저장되는지 알고 싶으면

charToRaw() 함수를 쓰면 됩니다. 예제를 통해 확인해보죠

이렇게 해서 여섯 가지의 R 자료형을 알아보았습니다!

 

마지막으로 하나 추가할 것은 특수 데이터 유형인데요!

특수 데이터 유형들에는

바로 결측 NA, 데이터가 없는 경우를 뜻하고요

그리고 NULL, 객체가 정의되지 않은 상태를 말하고요

그리고 NaN, 수학적으로 정의 불가능한 (예를 들어 10/0)

마지막으로 Inf, +.- 무한히 뻗는 수가 있습니다.

이렇게 해서 R에서 사용하는 모든 자료형과 자료형과 함께 쓰이는 여러가지 함수들, 연산들에 대해 정리해보았습니다.

 

자료형을 아는 것은 기본 중에 기본이니 여러 보면서 모두 열공 합시다!:)