벡터와 벡터끼리 연산을 할 수가 있다.
아래처럼.
a = c(1, 2, 3)
b = c(1, 2, 3)
c = a + b
c
[1] 2 4 6
그러면 반드시 위처럼 1:1로 대응이 될 때만 연산이 가능할까?
아니다.
길이가 서로 다른 벡터끼리도 연산시킬 수 있다.
이 때는 짧은 쪽의 벡터가 반복되어 긴 쪽의 벡터에 연산된다.
이를 사이클링 기법이라고 한다.
이 때, 두 벡터의 길이는 서로 배수관계여야 한다.
무슨 말인가 하면, 아래처럼 한쪽 벡터의 길이가 4라면, 다른쪽 벡터 길이는 2로, 서로 배수여야 한다.
한쪽 벡터의 길이가 6이라면, 다른쪽은 3. 한쪽 벡터의 길이가 8이라면 다른 쪽 벡터의 길이는 최소 2 혹은 4여야 한다.
a = c(1, 2, 3, 4)
b = c(1, 2)
c = a + b
c
[1] 2 4 4 6
위처럼 딱 맞는 배수길이이면, 짧은 쪽인 b를 a에다 반복해서 더해준다.
고로 1, 2, 3, 4 -> 2, 4, 4, 6 이 된다.
만약 아래처럼 한쪽은 길이가 4인데 한쪽은 길이가 3이라면 배수 관계가 아니다.
a = c(1, 2, 3, 4)
b = c(1, 2, 3)
c = a + b
c
위처럼 서로 배수관계가 아닌데 연산을 하면 어떻게 되는가?
싱겁지만 문제 없이 연산이 되긴 된다. 아래처럼 경고 메시지가 뜰 뿐.
경고 메시지는 그냥 무시하면 되므로 크게 문제 될 것이 없다. 짧은쪽이 긴쪽의 벡터에 돌아가며 적용되는 것은 똑같다. 중간에 끊길 뿐.
1, 2, 3, 4 <- a(1, 2, 3, 4)
+ 1, 2, 3 <- b(1, 2, 3)
위처럼 시키면
1, 2, 3, 4 <- a(1, 2, 3, 4)
+ 1, 2, 3, 1 <- b(1, 2, 3)
이렇게 된다는 얘기.
'데이터 분석' 카테고리의 다른 글
R 벡터에 이름 지어주기 (0) | 2022.06.12 |
---|