벡터라고하면 물리에서나 들어봤던 것 같다. R에서 자주 다루게 되는 데이터 구조이다.
벡터, 행렬, 데이터프레임을 가장 많이 사용한다고 한다.
(가장 많이 사용한다는 뜻을 곰곰히 생각해보면, 위에 언급한 것 외에 다른 데이터 구조가 있다는 뜻이다.)
그냥 프로그래밍의 배열과 같다고 얘기하고 싶지만, 그건 틀린말이다.
(생김새가 비슷하다고 중국인과 한국인이 같다고 얘기하지 않는다.)
그래서 정의를 한번 짚어보고 갈 필요가 있다.
간단한 정의는 아래와 같다.
--------------------------------------------------------------------------------------
<벡터의 정의>
- 하나의 스칼라값, 혹은 하나 이상의 스칼라 원소들을 갖는 단순한 형태의 집합
※ 출처 : 데이터 분석 전문가 가이드, 한국데이터산업진흥원
--------------------------------------------------------------------------------------
말이 너무 어려우니, 그냥 '원소들의 집합' 정도로 이해하고 넘어가자.
1. 벡터의 생성
ex) x <- c(1,2,3); y<-c("a","b","c"); z <- c(TRUE,FALSE,TRUE)
- 벡터는 동일한 타입(숫자, 문자, 논리 등)으로 입력해줘야 한다. 아니면 한가지로 변한다.
- 참고로 ';'는 한줄에 여러 코드를 입력할 때 구분자의 역할을 한다.(가독성은 떨어지니 사용 주의)
- 테스트해보니, 문자+숫자→문자, 숫자+논리→숫자로 변했다.
- 프로그래밍을 배운 사람들은 보통 쌍따옴표("~")안의 내용은 문자열(String)으로 알테지만,
여기선 문자열이나 문자를 별도로 구분하지 않고 그냥 다 문자라고 한다.
- 'c()'에서 c의 의미는 concentration(연결) 이라고 한단다.
ex) a <- c(x,y)
- 신기하게도, 위와 같이 작성하면 x와 y에 저장된 데이터가 합쳐서 a에 저장된다
- 역시나 앞서 말했던 것처럼 x와 y의 데이터 타입이 다른경우 한 쪽으로 자동 형변환된다.
2. 연속된 정수 넣기
ex) x <- c(1,2,50:90) 또는 x <- 50:90
- c를 이용해 선언하거나, 간략하게 표현 가능하다.
- ':' 구문은 50부터 90까지 넣으라는 소리다.
3. seq함수
ex) x <- seq(1,101,3) # (시작, 종료, 간격)
- 1부터 101사이의 값을 저장하는데, 1부터 3만큼씩 증가시킨 값을 저장한다는 뜻이다.
- 101은 종료의 위치일 뿐, 간격에 따라 x에 들어갈수도 안들어갈 수 있으니 유의한다.
- 참고로 '#'은 R에서 주석처리에 사용된다.
4. rep함수
ex) x <- rep(1,times=5) # (A,times=N) # A를 N번 반복
ex) x <- rep(1:5, times=3) # 1:5까지를 3번 반복, 즉 총 15개의 원소가 x에 저장
ex) x <- rep(c("a","b","c"),each=3) #a,b,c 한 뭉탱이가 3번 반복되어 저장된다.
- A칸에 '1'이라고 썼을때와 '1:5'라고 썻을때의 차이가 있음을 주의한다.
- 결국 반복하는 건 똑같다. 처음엔 헷갈릴 수 있다.
5. names함수
ex) score <- c(90,85,70); names(score) <- c("John","Tom",Jane")
# 90, 85, 70 각 숫자에 존, 톰, 제인 이름을 붙여준다.
- 실제로는 엑셀로 불러오는 게 많기에 굳이 필요 없을 것 같지만, 지식차원에서 알아둔다.
6. 원소의 출력
ex) print(x[-2]) # 2번째 원소는 제외하고 출력
ex) print(x[2]) # 2번째 원소만 출력
ex) x[1:4] # 1부터 4까지의 값을 출력
ex) x[c(1,3,5)] # 1,3,5 번째 값을 출력! 근데? c를 사용하는군
ex) x[seq(1,5,2)] # 1부터 5까지 2씩 증가한 값에 해당하는 원소를 출력. 1,3,5번째 원소값이 출력된다.
ex) x[seq(5,1,-1)] # 5부터 1까지 -1씩 증가하면서 값을 출력
ex) x[-c(3:5)] # 3~5번째 값을 제외하고 출력
- 예시가 많은 이유는 별의별 활용이 가능하다는 뜻이다. 교수님들이 문제로 약올리기 좋다.
- print는 콘솔에 출력해주는 역할을 하는 함수이다. 찬조출연했다.
- '-'는 해당 원소만 제외하라는 뜻이다. 직관적으로 빼(-)라는 뜻으로 이해하면 좋다.
- 참고로 인덱스는 무조건 1부터 시작한다.(C언어는 0부터 시작해서 전공자는 헷갈릴 수 있다.)
일단 이정도로 정리하고, 다음 게시글에서 벡터의 연산을 다뤄볼까 한다.
'데이터와 AI > R 기초' 카테고리의 다른 글
[R기초-6] R sudio를 통해 파일 읽고 쓰기 (0) | 2021.01.11 |
---|---|
[R기초-5] Matrix 및 Data Frame의 연산 및 함수 (0) | 2021.01.11 |
[R기초-4] Data Frame 생성 및 이용 (0) | 2021.01.08 |
[R기초-3] Matrix란 (0) | 2021.01.07 |
[R기초-2] 벡터의 연산, 함수, 논리값 (0) | 2021.01.03 |