1.4 벡터(Vectors)
벡터는 R의 중요한 함수인 c()
함수로 요소들을 결합하여 생성될 수 있다.
<- c(1, 5, 11, 33) # 수치 벡터, 길이(요소의 갯수)가 4
v1 <- c("hello","world") # 문자 벡터, 길이(요소의 갯수)가 2 (문자열 벡터)
v2 <- c(TRUE, TRUE, FALSE) # 논리 벡터, c(T, T, F)와 같음 v3
하나의 벡터에 서로 다른 유형의 요소들을 결합하면 최소의 제한적인 유형으로 요소들을 강제 변환한다:
<- c(v1, v2, v3, "boo") # 모든 요소들이 문자형으로 변환됨 v4
벡터 생성의 다른 방법들:
# : 의 사용
<- 1:7 # (from:to), c(1,2,3,4,5,6,7)와 같음.
v
# rep() 함수의 사용
<- rep(0, 77) # 복사 : 0을 77개 복사, 변수 v는 0이 77개 있는 벡터
v <- rep(1:3, times=2) # 1:3을 두 번 복사
v <- rep(1:10, each=2) # 1:10의 각 요소를 두 번 복사
v
# seq() 함수의 사용
<- seq(10,20,2) # 시퀀스 : 10과 20사이의 2 간격의 수
v
# 예
<- 1:5 # c(1,2,3,4,5)와 같음
v1 <- rep(1,5) # c(1,1,1,1,1)과 같음 v2
벡터의 길이 즉 벡터의 요소의 갯수는 length()
함수를 사용하여 확인한다.
length(v1)
## [1] 5
length(v2)
## [1] 5
요소 단위의 연산 :
+ v2 # 대응 요소별 더하기 v1
## [1] 2 3 4 5 6
+ 1 # 각 요소에 1 더하기 v1
## [1] 2 3 4 5 6
* 2 # 각 요소를 2로 곱하기 v1
## [1] 2 4 6 8 10
+ c(1,7) # 자동 채우기 : v1 + c(1, 7, 1, 7, 1)과 같음. v1
## Warning in v1 + c(1, 7): 두 객체의 길이가 서로 배수관계에 있지 않습니다
## [1] 2 9 4 11 6
# Warning 메시지 출력
산술 연산 : 다양한 함수를 이용하여 산술연산을 수행할 수 있다.
sum(v1) # 변수 v1의 모든 요소들을 더한다
## [1] 15
mean(v1) # 변수 v1 요소들의 평균
## [1] 3
sd(v1) # 변수 v1 요소들의 표준편차
## [1] 1.581139
cor(v1,v1*5) # 변수 v1과 v1*5 사이의 상관계수
## [1] 1
논리 연산 :
# 대소 비교
> 2 # 벡터 v1의 각 요소를 2와 비교, 논리 벡터 반환 v1
## [1] FALSE FALSE TRUE TRUE TRUE
==v2 # 벡터 v1과 v2 각각의 요소가 같은지 비교, 논리 벡터 반환 v1
## [1] TRUE FALSE FALSE FALSE FALSE
!=v2 # 벡터 v1과 v2 각각의 요소가 서로 다른지 비교, 논리 벡터 반환, v1
## [1] FALSE TRUE TRUE TRUE TRUE
# !(v1==v2)와 같음.
# 비교 연산의 결합 : OR(|), AND(&) => 요소별 비교의 결합
>2) | (v2>0) # | 는 부울리안 OR, 벡터를 반환 (v1
## [1] TRUE TRUE TRUE TRUE TRUE
>2) & (v2>0) # & 는 부울리안 AND, 벡터를 반환 (v1
## [1] FALSE FALSE TRUE TRUE TRUE
# 비교 연산의 결합 : OR(||), AND(&&) => 벡터 전체 비교의 결합
>2) || (v2>0) # || 는 부울리안 OR, 단일 값 반환 (v1
## [1] TRUE
>2) && (v2>0) # && 는 부울리안 AND, 단일 값 반환 (v1
## [1] FALSE
벡터 요소 :
3] # 벡터 v1의 세 번째 요소 ; 3은 요소의 색인(index) v1[
## [1] 3
2:4] # 벡터 v1의 2, 3, 4 번째 요소 v1[
## [1] 2 3 4
c(1,3)] # 1번째와 3번째 요소 - 색인도 벡터임을 주목 v1[
## [1] 1 3
c(T,T,F,F,F)] # 색인이 논리 벡터 : TRUE인 요소 만 - 1, 2번째 요소 v1[
## [1] 1 2
>3] # v1>3의 결과는 논리 벡터. 요소 중 값이 3보다 큰 요소 반환 v1[v1
## [1] 4 5
R에서는 벡터의 요소 번호가 1부터 시작함에 주의해야 한다. C 언어와 같이 색인 번호가 0부터 시작하는 언어를 사용해 본 사람들은 혼동이 될 수 있다.
벡터에 요소를 추가하려면, 다음과 같이 추가할 수 있다.
6:10] <- 6:10
v1[ v1
## [1] 1 2 3 4 5 6 7 8 9 10
벡터에 요소의 갯수(길이)를 직접 할당할 수도 있다 :
length(v1) <- 15 # 11~15번째 요소는 결측치 NA로 추가된다
v1
## [1] 1 2 3 4 5 6 7 8 9 10 NA NA NA NA NA