본문 바로가기
언어/R

[R-003] 데이터 구조, 벡터 1

by 천왕지짐 2023. 3. 29.

R을 처음 시작할 때 많이 들었던 말이 백터(Vector) 였던 것 같다. 백터는 데이터 구조중 하나인데 벡터를 말하기 전에 먼저 혼동할 수 있는 데이터 구조와 자료형에 대해 먼저 알아보는 것이 순서인 것 같다.

 

데이터 구조는 데이터를 효율적으로 관리할 수 있는 데이터의 구조 즉, 어떤 형태를 갖는 모양이며 데이터를 저장하는 방법으로 벡터(vector), 행렬(matrix), 배열(array), 리스트(list), 데이터 프레임(data.frame) 등이 있다.

 

벡터라는 말은 단일값(스칼라)들이 모여져 있는 변수(?)를 말한다. 다른 표현으로 하나 이상의 동일한 데이터 타입을 가지는 1차원 데이터 구조라고 말한다. 행렬은 동일한 데이터 타입의 2차원 데이터 구조이며, 배열은 3차원 이상의 다차원 배열을 표현할 수 있는 데이터 구조이다. 리스트는 서로 다른 데이터 타입을 가진 데이터들을 하나로 묶을 수 있는 데이터 구조이다. 데이터 프레임은 엑셀에서 흔히 볼 수 있는 테이블 형태의 데이터 구조이다. 

 

이에 비해 자료형은 변수에 저장될 데이터의 종류를 의미한다. 예를 들어, 정수형, 실수형, 문자열 등이 있다. 프로그래밍 경험을 가지고 있다면 int, float, char 등을 기억하고 있을 듯 하다.

 

벡터( Vector)

 

위에서 벡터는 단일값들이 모여져 있는 변수를 말한다고 했다. 단일값이란 정수면 정수, 실수면 실수, 문자면 문자들이 모여있어야 한다는 뜻이다. 물론 정수와 문자를 섞어서 사용하면 문자로 변경된다.

 

아래 내용 읽어보고 실습을 따라해보면 충분히 이해될 듯 하다. 그리고 벡터의 인덱스(위치)는 1부터 시작한다. 

x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)의 뜻은 1부터 10까지의 10개의 숫자를 가진 벡터 x를 생성한다는 뜻이고 mean(x)의 뜻은 벡터 x의 평균을 구하라는 뜻이다. 실제로는 몇 만개의 숫자 데이터가 들어있는 엑셀 파일을 읽은 후 mean(x)라는 명령어(함수) 하나로 평균을 얻을 수 있다. 이것 하나만 생각해도 R을 사용하고 싶어질 것 같다.

 

이미 언급했지만 벡터의 원소는 모두 같은 형식(데이터형)을 가져야 한다. 하나씩 저장될 때는 벡터라고 하지 않고 그냥 변수라고 많이 부른다.


참고) Rstudio 사용법을 잘 익혀두는 것이 필요하다. 예를 들어, 스크립트의 내용을 지우거나 콘솔의 내용을 지워도 변수값은 그대로 유지된다는 것도 알고 있으면 좋다.

 

참고) Copy & Paste 할 때는 따옴표에 주의하자. 인터넷에서 복사한 후 Rstudio에 붙여넣기 하는 경우 따옴표( “ ”)의 모양 때문에 에러가 발생하기도 한다.  

 

참고) “R은 대소문자를 구분한다.” 꼭 기억하자. 변수 뿐만 아니라 명령어도 대소문자를 지키지 않으면 실행되지 않는다.
그리고 R은 인터프리터 언어(cf.컴파일 언어 = C, Java언어 등)이다.
 - 많이 사용하지는 않지만 Console에서 ↑ 방향 키를 누르면 이전에 했던 작업 수행이 가능하다.
 - q() 사용하면 R을 종료시킬 수 있다.

 - 도움말은 다음과 같이 사용한다.

> help(mean) 또는
> ?mean

 

[실습] 벡터(변수)에 값을 대입해 보자.
> r <- 5     # 숫자 5를 r에 할당(대입)
> s <- c(1, 3, 3, 5)     # 숫자 1, 3, 3, 5를 s에 할당(대입)
> t <- c("KOREA", "TAEJEON")
> x <- c("KOREA", ”TAEJEON", 3, 5)     # 문자형과 함께 사용된 숫자는 모두 문자형(큰따옴표)으로 바뀜
> y <- c(1, 3, 5, TRUE, FALSE)     # 숫자와 함께 사용된 블리언은 1, 3, 5, 1, 0으로 바뀜
> z <- c("KOREA", 3, FALSE)     # "KOREA", "3", "FALSE"로 바뀜

[실습] 위 실습에서 변수(벡터)에 들어있는 값을 출력해 보자.
> r에 있는 5값을 출력하기 위해서는 r이라고만 쓰면 된다.
> s에 들어있는 세 개의 값을 출력하기 위해서는 s만 쓰면 된다.
> s에 들어있는 세 개의 값 중에서 두 번째 값을 출력하기 위해서는 s[2]라고 쓰면 된다.
> s에 들어있는 세 개의 값 중에서 두 번째와 세 번째의 값을 출력하기 위해서는 s[2:3]이라고 쓰면 된다.

 

아래에 기술되어 있는 함수는 지금 생각해보지 않아도 되겠지만 함수에 벡터를 이렇게 사용할 수 있다는 의미로 표시하였으니 참고만 하자.


[실습]  평균, 표준편차, 히스토그램을 구해 보자.
> s의 평균은 mean(s)
> 표준편차는 sd(s)
> 히스토그램은 hist(s)
   hist(s, breaks=8)의 경우 도수 숫자를 8로 변경하여 출력해 보자.

[실습] 벡터의 길이와 형식을 출력해 보자.
> length(s)     #  4가 출력됨
> mode(s)     # “numeric“이라고 출력됨
> mode(t)     # “character“라고 출력됨

[실습] 문자열 함수를 사용해 보자.
> u <- paste("abc", "def", "ghi")     # 벡터 u값은 paste함수에 의해 "abc def ghi"로 문자열이 공백과 함께 하나로 만들어짐
> v <- strsplit(u, " ")     # 벡터 v값은 strsplit함수에 의해 "abc", "def", "ghi"로 나누어짐

'언어 > R' 카테고리의 다른 글

[R-006] 데이터 프레임(Data Frame)  (0) 2023.04.04
[R-005] 벡터(Vector) 2  (0) 2023.03.29
[R-004] R 기본 문법  (0) 2023.03.29
[R-002] R, RStudio 설치하기  (0) 2023.03.28
[R-001] 빅데이터 분석, R  (0) 2023.03.28

댓글