본문 바로가기

배우기/기록의 중요성

[R] R에서의 broadcasting 기능

728x90
반응형

broadcasting(브로드캐스팅) 기능: 서로 다른 크기의 행렬의 연산 시 작은 쪽 행렬이 큰 쪽 행렬에 맞게 반복 연산되는 기능

일반적으로 R은 브로드캐스팅 기능을 지원하지 않으며 파이썬에서는 가능하다.

 

 

예)

아래와 같은 matrix가 있다.

 

m1-m2를 하게 되면 "배열의 크기가 올바르지 않습니다." 라는 오류가 발생한다.

 

그러나 m1 - 1:3 을 하게 되면, 즉 행렬에 벡터를 연산하게 되면 컬럼 방향으로 반복되어 연산된다.

 

이는 R은 컬럼 우선 순위이기 때문이다. 

따라서 R은 벡터의 브로드캐스팅은 되지만 matrix 대 matrix는 계산이 되지 않고, matrix 대 벡터인 경우는 컬럼 방향으로 브로드캐스팅이 된다.

 

 

이에 대한 두 가지 해결 방안이 있다.

해결 1) 작은 행렬을 큰 행렬 사이즈에 맞게 변경하여 연산(실제 R 공식문서 솔루션)

 

 

해결 2) apply를 사용하여 행 별 연산 반복

Line 16의 결과는 R이 열 우선순위여서 행렬이 바뀐 채로 출력이 된다.

따라서 t함수를 사용하여 Line 17처럼 행렬전치를 하면 결과가 출력된다.

728x90
반응형