본문 바로가기
9.유용한 함수모음/계산관련 함수

[R코딩] 행렬에서 통계량과 각 원소의 편차 (sweep)

by makhimh 2020. 12. 25.
반응형

sweep 함수는 통계량과 각 원소의 차이를 반환해줍니다. 디폴트가 '차이'이고, 다른 계산값도 가능합니다. 

 

sweep(행렬, 방향, 통계량, FUN="-")

 

FUN은 어떤 연산을 할지 결정합니다. 디폴트는 - 입니다. 각 원소에서 통계량을 빼는 것입니다. 

 

예를 들어봅시다. 행렬을 하나 정의합시다. 

 

> m=matrix(1:12,3)
> m
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12

 

sweep 함수를 이용하여 각 원소에서 행렬의 최댓값을 빼봅시다. 이때는 방향이 따로 없기 때문에 1이나 2를 입력해도 결과가 동일합니다. 

 

> sweep(m,1,max(m))
     [,1] [,2] [,3] [,4]
[1,]  -11   -8   -5   -2
[2,]  -10   -7   -4   -1
[3,]   -9   -6   -3    0
> sweep(m,2,max(m))
     [,1] [,2] [,3] [,4]
[1,]  -11   -8   -5   -2
[2,]  -10   -7   -4   -1
[3,]   -9   -6   -3    0

 

이번에는 각 원소에서 열뱡향 평균을 빼봅시다. 행방향을 입력할 경우 경고 메시지가 뜹니다. 

 

> sweep(m,1,colMeans(m))
     [,1] [,2] [,3] [,4]
[1,]   -1   -7   -1    5
[2,]   -3    3   -3    3
[3,]   -5    1    7    1
경고메시지(들): 
In sweep(m, 1, colMeans(m)) :
  STATS is longer than the extent of 'dim(x)[MARGIN]'



> sweep(m,2,colMeans(m))
     [,1] [,2] [,3] [,4]
[1,]   -1   -1   -1   -1
[2,]    0    0    0    0
[3,]    1    1    1    1

 

반응형

댓글