데이터 분석, 통계 모델링, 머신 러닝 등 현대의 다양한 분석 작업에 있어, 효율적인 계산은 핵심적인 요소입니다. R 프로그래밍 언어는 계산을 빠르고 효율적으로 수행할 수 있도록 벡터 연산과 재활용 (recycling) 연산을 지원합니다.
R 벡터 연산 이해하기
벡터 간 덧셈, 뺄셈, 곱셈, 나눗셈 등의 연산은 벡터의 각 원소에 대하여 각각 연산이 수행됩니다. 단, 주의 할 점은 벡터 연산을 수행할 때는 벡터들의 길이가 같아야 합니다.
# 벡터 연산하기 예제
a <- c(1, 2, 3)
b <- c(4, 5, 6)
a + b # 벡터 간 덧셈
a - b # 벡터 간 뺄셈
a * b # 벡터 간 곱셈
a / b # 벡터 간 나눗셈
a %% b # 벡터 간 나머지 연산
벡터화 (Vectorized) 코드
R은 벡터화 코드를 태생적으로 지원합니다. 벡터화 코드는 R 코드를 R 코드답게 만들어 주는 대표적 특징입니다. 즉, 수학 시간에 배우는 벡터 연산을 기본적으로 지원하는 것 입니다. 예를 한번 볼까요?
\left(\begin{array}{c} 1 \\ 2 \\ 4 \end{array}\right) + \left(\begin{array}{c} 2 \\ 3 \\ 5 \end{array}\right) = \left(\begin{array}{c} 3 \\ 5 \\ 9 \end{array}\right)
위와 같은 연산을 다음과 같이 표현할 수 있겠습니다.
c(1, 2, 4) + c(2, 3, 5)
다음과 같이 상수를 곱하는 연산 역시 마찬가지 입니다.
2\left(\begin{array}{c} 1 \\ 2 \\ 4 \\ 5 \end{array}\right) = \left(\begin{array}{c} 2 \\ 4 \\ 8 \\ 10 \end{array}\right)
x <- c(1, 2, 4, 5)
x * 2
벡터화(Vectorized) 코드는 R에서 반복문을 사용하지 않고 벡터를 한번에 처리할 수 있도록 해줍니다. 이를 이용하여 여러 값을 동시에 처리할 수 있으며, 코드의 가독성과 성능을 높이는 역할을 합니다.
R 벡터 재활용(Recyclying) 이란?
R 벡터 재활용(recycling) 원칙은 벡터 연산에서 벡터들의 길이가 다른 경우, 길이가 짧은 벡터를 긴 벡터의 길이에 맞춘 후 연산을 수행하는 것을 말합니다. 이 때 길이를 맞추기 위해서 길이가 짧은 벡터의 원소들을 재활용하기 때문에 벡터 재활용이라는 이름이 붙었습니다. 벡터 재활용을 잘 이해하면, 벡터 연산을 간단하게 나타 낼 수 있습니다.
- 벡터 재활용: 길이가 맞지 않는 벡터들을 자동으로 길이를 맞춰줌
예를 들어, 다음과 같은 코드를 실행해 봅시다.
c(1:4) + c(1, 2)
c(1:4) + c(1:3)
위 코드에서 c(1, 2)
벡터의 길이가 c(1:4)
벡터의 길이보다 작기 때문에, c(1, 2)
벡터가 자동으로 반복됩니다. 즉, 뒤의 벡터가 c(1, 2, 1, 2)
로 자동으로 반복되어 계산되는 것 입니다.
c()
함수와 :
연산자를 활용하여 벡터 만들기
앞에서 배운 벡터화 코드 개념과 재활용 개념을 응용하면 다음과 같은 벡터 생성도 가능합니다.
c(1:5)
x <- c(1:5) * 2
x
y <- c(1:5) * 2 - 1
y
퀴즈
앞에서 배운 개념들을 활용해서 1에서부터 100까지의 숫자들 중 홀수 만을 원소로 갖는 벡터 x
를 생성해 보세요!
본 포스팅은 R 프로그래밍 기초 공략.zip 교재의 일부분 입니다. 본 교재는 R을 독학하시는 분들을 위하여 특별히 제작된 교재입니다. R을 이제 막 시작하셨다면 슬기로운 통계생활과 같이 공부해보세요!