본문 바로가기
study/Rstudio

기초 R 3

by hena79 2021. 1. 12.
반응형

썸네일

6. 행렬

 

[1] 자료 벡터 이용하기

길이가 같은 벡터들을 쌓거나 이어 붙여서 행렬을 만든다.

 

cbind: 벡터들을 이어 붙여서 행렬을 만듦.

rbind: 벡터들을 아래로 쌓아서 행렬을 만듦.

 

cbind() 함수를 이용

> c1=c(1,2,3) #길이 3인 벡터> c2=c(4,5,6) #길이 3인 벡터
> c3=c(7,8,9) #길이 3인 벡터
> mat1=cbind(c1,c2) #옆으로 이어 붙여서 행렬 생성
> mat1
c1 c2
[1,] 1 4
[2,] 2 5
[3,] 3 6

rbind() 함수를 이용

> mat2=rbind(c2,c3) #아래로 쌓아서 행렬 생성
> mat2
[,1] [,2] [,3]
c2 4 5 6
c3 7 8 9

행렬의 몇 가지 속성들

자료의 유형: mode

차원: dimension , 행과 열의 길이

행의 이름: rownames

열의 이름: colnames

> mat1
c1 c2
[1,] 1 4
[2,] 2 5
[3,] 3 6
> mat2
[,1] [,2] [,3]
c2 4 5 6
c3 7 8 9
> mode(mat1); mode(mat2) #자료의 유형
[1] "numeric"
[1] "numeric"
> #dim 함수 사용하여 차원 알아보기
> dim(mat1); dim(mat2)
[1] 3 2 #mat1의 차원은 32
[1] 2 3 #mat2의 차원은 23
>#행렬 mat1의 행이름과 열이름 알아보기
> rownames(mat1); colnames(mat1)
NULL  #행렬 mat1의 행이름 없음
[1] "c1" "c2" #행렬 mat1의 열이름
>#행렬 mat2의 행이름과 열이름 알아보기
> rownames(mat2); colnames(mat2)
[1] "c1" "c2" #행렬 mat2의 행이름
NULL #행렬 mat2의 열이름 없음

[2] 함수 dim() 이용한 행렬 생성

길이가 p인 벡터를 정의한 후, n행과 m열을 정의하여 행렬을 만들 수 있다.

= (p = n*m )

 

원소가 9개 인 벡터 M을 생성한다.

> M=c(1,2,3,4,5,6,7,8,9) #M은 원소 9개인 벡터
> M
[1] 1 2 3 4 5 6 7 8 9

dim() 함수를 이용하여 M의 차원을 바꾼다.

> dim(M)=c(3,3) #M의 차원을 33열로 바꿈
> M
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9

벡터를 행렬로 reshape할 때 행렬에 채워지는 원소의 순서는 위에서 아래로이다.

 

또다른 방향으로 

행 이름 붙이기: rownames(행렬)=c(행의 이름 나열)

열 이름 붙이기: colnames(행렬)=c(열의 이름 나열)

>#행이름과 열이름 넣기
> rownames(M)=c('1행', '2행' ,'3행')
> colnames(M)=c('1열', '2열' ,'3열')
> M
1열 2열 3열
1행 1 4 7
2행 2 5 8
3행 3 6 9

 

 

 

 

[3] 함수 matrix()에 의한 행렬 

행렬을 정의하는 가장 일반적인 방법으로서 형식

 

matrix(벡터, nrow, ncol, byrow, dimnames)

 

인수들에 대해 간략히 설명

- 벡터: 자료 벡터. 반드시 넣어야 함

- nrow=: 행의 길이. 디폴트는 1.

- ncol=: 열의 길이 디폴트는 1.

- byrow=: 행렬의 원소가 채워지는 순서.

 

디폴트는 FALSE , “위에서 아래로

만약 TRUE이면 좌에서 우로채워짐

- dimnames=: 각 행과 열의 이름을 정의하는 길이 2의 리스트 객체로 정의된다.

, list(행이름 벡터, 열이름 벡터). 디폴트는 NULL 즉 행, 열 이름 없음.

 

#dim() 함수에 의한 행렬 정의에서처럼 (벡터의 길이)=(행 길이)×(열의 길이)가 성립

> vec=c(1,2,3,4,5,6) #vec은 원소 6개인 벡터
> M1=matrix(vec, nrow=3, ncol=2)  #행과 열의 길이를 모두 명시
> M1
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6

모두 M1과 동일한 행렬을 생성한다.

> M1=matrix(vec, nrow=3) # 행의 길이만 명시
> M1=matrix(vec, ncol=2) # 열의 길이만 명시
> M1=matrix(vec, ncol=2, nrow=3)  # 인수 키워드 순서를 바꾸어 입력
> M1=matrix(vec, 3, 2) # 인수 키워드 생략하면 행, 열 순으로 해야한다.
> M1=matrix(vec, 3) # 행의 길이만 입력

만약 좌에서 우로순서로 행렬을 생성하고 한다면,  byrow=TRUE를 추가

> M1=matrix(vec, nrow=3, ncol=2, byrow=TRUE#원소를 좌에서 우로 채움
> M1
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6

 

 

 

 

추천

 

기초 R 4

자료 파일의 입출력 1. 데이터 프레임의 입출력 [1] write.table()과 read.table() 데이터프레임이나 행렬을 txt 파일로 저장할 수 있다. ① 데이터프레임의 파일 저장 우선 mydata라는 데이터프레임을 다음

dasoni1004.com

 

 

기초 R 1

R 프로그램은 1995년 뉴질랜드의 Auckland 대학의 Robert Gentleman과 Ross Ihaka에 의해 개발되었다. 두 개발자의 이름의 머리글자를 이용하여 “R”로 명명된 것이다. R 프로그램은 배열 및 행렬로 표현된

dasoni1004.com

 

반응형

'study > Rstudio' 카테고리의 다른 글

R 시각화 - 1(시각화 함수)  (0) 2021.01.15
기초 R 4  (0) 2021.01.14
기초 R 2  (0) 2021.01.02
기초 R 1  (0) 2021.01.01
R Markdown기초  (0) 2020.12.31