본문 바로가기

R프로그래밍

[R프로그래밍] 행렬 구조 Ⅱ(apply, 행추가, 열추가, 차원 확인 등)

데이터 구조(벡터, 행렬, 리스트, 데이터프레임) 특집 - 행렬 두번째

 

 

 

< apply 함수 >

apply 함수는 평균이나 분산 등을 계산할 때 각 행이나 열에 일괄적으로 적용하는 함수이다.

apply(행렬 또는 배열 이름, dimcode(margin), function(적용할 함수)) 의 형태로 사용한다.

 

① dimcode는 차원의 수를 말하며, 1 또는 2만 입력할 수 있다.

② dimcode가 1일 때는 행(row), 2일 때는 열(column)에 적용된다.

③ function은 적용할 계산을 넣으면 된다. mean(평균), sum(합계) 등이 해당된다.

 

 

# apply 함수
m <- matrix(c(1:12), ncol=4)
m

apply(m, 2, mean) # 행렬 m의 각 열에 평균 계산
apply(m, 2, sum) # 행렬 m의 각 열의 합 계산

 

 

 

※ 참고

apply군 함수는 apply외에 lapply, sapply, tapply, mapply 등이 있다.

① laaply는 결과값을 리스트(list)로 변환

② sapply는 결과값을 가능하면 벡터(vector)로 변환

③ taaply는 각 집단별로 함수를 적용(예. 성별, 학년별 -등)

④ mapply는 함수 function을 각 원소별로 적용



 

< 행추가 및 열추가 >

행렬은 행이나 열을 추가 또는 삭제할 수 없다. 행렬도 벡터이므로 생성할 때부터 고정된 길이와 차원을 가지고 있기 때문이다. 따라서 벡터와 마찬가지로 '재할당'을 통해 추가와 삭제를 할 수 있다.

 

rbind( ) 함수 : 인수의 행을 묶어서 행렬로 재할당하는 함수, 행추가 함수

cbind( ) 함수 : 인수의 열을 묶어서 행렬로 재할당하는 함수, 열추가 함수

 

# 행추가 및 열추가
m <- matrix(c(1:12), ncol=4)
m
 
m <- cbind(c(55,56,57), m)  # 행렬의 가장 맨 앞 열에 55,56,57 추가
m
 
m <- cbind(1, m)   # 행렬의 가장 맨 앞 열에 1추가 (3행까지 있으므로 1로 다 채움)
m
 
m <- rbind(m, 0) 
m

 

 

 

 

< 백터와 행렬 구분하기 >

행렬은 단순히 벡터지만, 행과 열이라는 추가적 속성을 가지고 있다.

행렬은 길이(length) 외에 차원(dim)을 확인하거나 행(row)과 열(col)의 수를 확인할 수 있다.

 

# 
m <- matrix(c(1:12), nrow=3)
m
 
length(m)  # m의 길이
class(m)  # m의 데이터 구조 확인
attributes(m)  # m의 속성 확인
dim(m)  # m의 차원 확인
nrow(m) # m의 행의 개수 확인
ncol(m)  # m의 열의 개수 확인

 

 

 

- length( )는 길이를 확인하는 함수이다.

- class( )는 데이터 구조를 확인하는 명령어이다.

- attribute( )는 데이터의 속성을 알려준다. 차원(dim)등의 정보를 알려준다.

- 차원만 확인할 때는 dim( )을 사용한다. 예제에서 dim의 원소가 2개(3과 4)이므로 2차원이다. 첫 번째 차원의 길이는 3이고 두번째 차원의 길이는 4라는 뜻이다.

- 행(row)만 확인하고 싶을 때는 nrow( ), 열(column)만 확인하고 싶을 때는 ncol( )을 사용하면 된다.