3.1 R 벡터 Vector

벡터란 동일한 형태(예, 숫자 또는 문자)의 데이터 값들이 나열되어 있는 데이터 구조입니다.

3.1.1 벡터 만들기

3.1.1.1 c() 함수로 벡터 만들기

# 변수 v1에 숫자 1, 2, 3을 할당
v1 <- c(1, 2, 3)  
v2 <- c(4, 5, 6)  
v1; v2
#> [1] 1 2 3
#> [1] 4 5 6
# 변수 v3에 변수 v1과 v2의 값들을 결합하여 할당
v3 <- c(v1, v2)   
v3
#> [1] 1 2 3 4 5 6
# 변수 s1에 문자열 벡터인 "대한", "민국", "행정"을 할당
s1 <- c("대한", "민국", "행정")  
s1
#> [1] "대한" "민국" "행정"

3.1.1.2 연속적인 숫자로 벡터 만들기

# 콜론(:)을 이용해 연속 숫자가 들어 있는 변수 만들기
var1 <- c(1:5)   # 1~5까지의 연속 값
var1
#> [1] 1 2 3 4 5
# seq() 함수를 이용해 연속 숫자가 들어 있는 변수 만들기
var2 <- seq(1, 5)   # 1~5까지의 연속 값
var2
#> [1] 1 2 3 4 5
# seq() 함수의 by 옵션을 이용해 일정한 간격의 연속 숫자가 들어 있는 변수 만들기
var3 <- seq(1, 10, by = 2)   # 1~10까지 2간격의 연속 값
var4 <- seq(1, 10, by = 3)   # 1~10까지 3간격의 연속 값
var5 <- seq(from = 1.0, to = 2.0, length.out = 5)
var3; var4; var5
#> [1] 1 3 5 7 9
#> [1]  1  4  7 10
#> [1] 1.00 1.25 1.50 1.75 2.00
# rep() 함수를 이용해 반복값이 들어있는 변수 만들기
var6 <- rep(5, times = 7)  # 5를 7번 반복 
var7 <- rep(c("a", "b"), each = 3)  # 각 문자 3번 반복
var6; var7
#> [1] 5 5 5 5 5 5 5
#> [1] "a" "a" "a" "b" "b" "b"

3.1.1.3 벡터 요소 값에 이름 부여

# names() 함수를 이용해 값마다 이름 부여
mscore <- c(95, 85, 75)
names(mscore) <- c("김철수", "이영희", "홍길동")
mscore
#> 김철수 이영희 홍길동 
#>     95     85     75

3.1.2 벡터 요소 추출

벡터 안에 들어있는 값들을 요소라고 부릅니다.

3.1.2.1 특정 위치에 있는 요소 추출

벡터 내의 특정 위치에 있는 요소를 불러오려면 벡터명[번호]라고 하면 됩니다.

v <- c(11, 12, 13, 14, 15)
w <- c(1, 2, 3, 4, 5)
v[1]
#> [1] 11
v[2:3]
#> [1] 12 13
v[c(1, 3, 5)]
#> [1] 11 13 15
w[seq(1, 5, 2)]  # 홀수번째 값 출력
#> [1] 1 3 5

3.1.2.2 이름으로 요소 추출

mscore <- c(95, 85, 75)
names(mscore) <- c("김철수", "이영희", "홍길동")

mscore["이영희"]
#> 이영희 
#>     85

3.1.2.3 마이너스 기호(-)를 이용하여 요소 제외

# -를 사용하면 원하지 않는 값을 제외할 수 있음
v[-2]
#> [1] 11 13 14 15
w[-c(3:4)]
#> [1] 1 2 5

3.1.2.4 조건으로 요소 추출

s <- c(3, 1, 5, 9, 7, 10)

# 5보다 큰 값을 골라내 부분 벡터로 추출
s[s >= 5] 
#> [1]  5  9  7 10

# 8보다 큰 값을 골라내 부분 벡터로 추출
subset(s, s >= 8)
#> [1]  9 10

# s에서 8보다 큰 element를 가진 index를 리턴
which(s >= 8) 
#> [1] 4 6

3.1.3 벡터 연산

v <- c(11, 12, 13, 14, 15)
w <- c(1, 2, 3, 4, 5)

v[1] + w[5]   # 11+5=16
#> [1] 16
v + w         # 11+1, 12+2, ...
#> [1] 12 14 16 18 20
v * w         # 11*1, 12*2, ... 
#> [1] 11 24 39 56 75
w + 2         # 1+2, 2+2, ...
#> [1] 3 4 5 6 7
w - mean(w)   # 1-평균, 2-평균, ...
#> [1] -2 -1  0  1  2
sqrt(w)       # sqrt(1), sqrt(2), ...
#> [1] 1.00 1.41 1.73 2.00 2.24
sum(w)        # 1+2+3+4+5
#> [1] 15

3.1.4 기타

3.1.4.1 벡터 길이 측정

length(v)
#> [1] 5

3.1.4.2 벡터 결측값

# 결측값이 있는 벡터 생성
have_child <- c(김철수 = "yes", 이영철 = "yes", 
                홍길동 = NA, 김연아 = NA)

# 결측값 유무 검사
is.na(have_child)
#> 김철수 이영철 홍길동 김연아 
#>  FALSE  FALSE   TRUE   TRUE