2013년 8월 30일 금요일

Vectorization in R

벡터에 제곱근 취하는 방법
v <- c(4, 7, 23.5, 76,2, 80)
x <- sqrt(v)

동일한 길이를 갖는 벡터에 대해 아래와 같이 계산했을 때, 벡터 각각의 성분에 대해 계산함. 즉, 4+34, 6+32.4, 87+12가 계산됨.
v1 <- c(4, 6, 87)
v2 <- c(34, 32.4, 12)
v1 + v2

위와 같은 계산에서 두 벡터의 길이가 동일하지 않다면?
R에서는 작은 벡터에 대해 recycling rule을 적용하여, 큰 벡터의 크기만큼 채워서 계산함. 즉, 아래의 계산결과는 4+10, 6+2, 8+10, 24+2.
v1 <- c(4, 6, 8, 24)
v2 <- c(10, 2)
v1 + v2

두 벡터의 길이가 위와 같이 배수 관계에 있지 않다면?
여전히 recycling rule이 적용되며, 경고(에러가 아닌)를 띄워줌.
v1 <- c(4, 6, 8, 24)
v2 <- c(10, 2, 4)
v1 + v2

이러한 맥락에서 아래와 같은 계산은 숫자 2를 벡터(c(2))로 간주하여, recycle 시켜 계산하는 것으로 볼 수 있음.
v1 <- c(4, 6, 8, 24)
2 * v1

댓글 없음:

댓글 쓰기