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의 차원은 3행 2열 [1] 2 3 #mat2의 차원은 2행 3열 |
>#행렬 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의 차원을 3행 3열로 바꿈 > 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 |