[R_bigdata] R의 자료구조 (매트릭스)

매트릭스는 행열로 이뤄진 자료구조로, 스칼라 , 벡터 보다 큰 의미를 가지고 있다고 볼 수 있다. 벡터는 여러개의 스칼라 자료구조의 집합이라고 볼 수 있듯이 매트릭스의 행과 열 역시 여러개의 벡터 구조로 되어있다고 할 수 있다.

#day02_06_matrix.R
#행렬 : 같은 자료형을 가진 데이터를 행과 열로 나열한 자료구조

#m*n 의 형태
#matrix(벡터, 행수, 열수)

a<-1:9
a
mat1 <- matrix(a,nrow=3,ncol=3) #여기서 nrow와 ncol은 키워드이기 때문에 변경할 수 없다.
mat1 <- matrix(a,3,3) #다만 이러한 식으로 nrow,ncol 을 제외하고 호출하더라도 정상작동한다.
mat1

#매트릭스의 조회
mat1
##mat1에서 1행의 전체 열을 조회해라
mat1[1,]
##mat1에서 값 5를 조회해보자
mat1[2,2]

#실습
#mat1에서 1행의 1열과 3열을 조회해주세요
mat1[1,c(1,3)] #벡터를 열의 자리에 넣음으로써 같이 조회가 가능하다.
mat1[1,c(1,4)] #3열이 최대이기 때문에 out of bounds 오류가 발생한다.
#데이터의 두번째 방의 값을 조회해라
#변수를 이용하는 방법
m <- mat1[1,c(1,3)] #1,7
m[2] #1,7 중 두번 째인 7이 출력될 것

#mat1[1,c(1,3)] 이 변수 m에 들어가는 것이 가능하다면 아래와 같이 쓰는 것도 가능하다 .
mat1[1,c(1,3)][2]

#matrix에 이름 붙이기
#행에 이름 붙이기: 이름이 붙더라도 인덱스는 계속 존재한다.
rownames(mat1)<-c('a','b','c')
mat1
#열에 이름 붙이기
colnames(mat1)<-c('d','e','f')
mat1
#<mat1> 의 결과
#  d e f
#a 1 4 7
#b 2 5 8
#c 3 6 9

#실습하기
#1.mat1에서 b행의 모든 열을 조회
mat1['b',]
#2.mat1에서 a,c행의 d,f 열을 조회
mat1[c('a','c'),c('d','f')] #행,열 각각의 자리에 벡터가 들어간다.
#3.mat1에서 b행의 e열의 값을 99로 변경해라
mat1['b','e'] <- 99 #벡터형태로 조회하면 벡터를 넣을 수 있다.
mat1

#메트릭스는 동일한 데이터 유형만 저장이 가능하다. 포괄적인 타입으로 통일된다는 것이다.
#가령 문자 타입으로 수정되는 경우 전부 문자타입으로 변경된다.
#벡터와 동일하다.
mat1['b','e'] <- '가'
mat1

댓글