본문 바로가기

배우기/복습노트[R과 분석]

[복습] R(programming language) 자료구조(행렬과 배열) (4) + 하루끝(20231205)

728x90
반응형

이전 자료구조 중 벡터와 데이터 프레임은 이전 게시물에 올려두었다.

 

벡터

https://metime.tistory.com/103

 

[복습] R(programming language) 자료구조(벡터) (2)

https://metime.tistory.com/96 [복습] R(programming language) 의 자료구조(벡터, 데이터 프레임) + 복습후기(20231121) R의 자료구조에는, 0. 스칼라 1. 벡터 2. 리스트 3. 행렬 4.배열 5. 데이터 프레임 이 있다. 오늘

metime.tistory.com

 

데이터 프레임

https://metime.tistory.com/104

 

[복습] R(programming language) 자료구조(데이터 프레임) (3)

데이터 프레임을 살펴보기 전에 다른 자료구조들도 간단히 살펴보자. 1. 벡터 - 1차원이다. - 서로 같은 데이터타입만 허용한다. 사용자가 임의로 다른 데이터를 넣으면 문자가 상위 개념이어서

metime.tistory.com

 

이제 남은 자료구조는 행렬과 배열이다.

 

 

행렬(matrix)

행렬은 행과 열의 구조를 갖는 2차원 형태의 자료구조이나 데이터 프레임처럼 key 구조는 아니다.

벡터의 확장 구조이기 때문에 단일 데이터 타입으로만 구성되어 있다.

 

1. 생성

matrix( data  =  ,                # 데이터(1차원)

            nrow = ,                  # 행의 수

            ncol =  ,                  # 컬럼 수

            byrow = F ,             # 컬럼 우선 순위이기 때문에 이 옵션은 행 우선 순위 여부를 묻는다.

            dimnames = )         # 행과 열의 이름(리스트로 전달)

 

 

Line 1의 결과를 보면 숫자가 컬럼방향으로 진행된다. 그래서 컬럼 우선 순위 진행이다.

여기서 byrow옵션에 T를 주면 숫자가 행 방향으로 진행된다. byrow가 행 우선 순위 진행 옵션이기 때문이다.

 

 

 

2. 구조

 

nrow, ncol 등으로 행과 열의 수를 셀 수 있으며, rownames와 colnames로 이름 확인도 가능하다.

Line 5에 열별 이름을 부여했으나 행렬에서는 이것이 key가 될 수는 없다.

 

dimnames를 사용하면 첫 번째 층이 행이름, 두 번째 층이 열이름으로 출력된다.

 

 

3. 색인 

 

Line 6을 제외하고는 여러 색인이 가능하다.

 

https://metime.tistory.com/106

 

[R] 이해한대로 써보는 차원축소

차원축소란 2차원이면 1차원으로, 1차원이면 0차원(스칼라)로 축소되는 것을 의미한다. 여러 복잡한 자료구조를 갖는 언어는 데이터를 표현하기 적절한 구조들을 가지고 있다. 1 이라는 숫자 하

metime.tistory.com

 

 

위 글에서도 작성하였지만 색인에는 차원축소가 포함되어 있는데, 차원 축소를 방지하는 색인 방법이 있다.

drop 이라는 옵션이다.

 

 

함수들마다 요구하는 데이터 차원이 있기 때문에 차원 축소 방지 기법에 있는 것이다.

 

 

5. 구조 변경

행렬은 정해져 있는 위치까지만 값을 가지고 있기 때문에 Line 6처럼 없는 바운드에 대해서는 오류가 발생한다(NULL 발생 아님).

그래서 Lind 6~8처럼 행 추가 또는 열 추가는 불가하다.

 

열 추가를 하기 위해서는 cbind 함수를, 행 추가를 하기 위해서는 rbind 함수를 사용하여야 한다(Line10, 11).

 

728x90

 

 

연습문제를 하나 풀어보자.

1) 아래 순서대로 행렬을 생성하여라(s1)

봄    가을

여름  겨울

 

2) 아래 순서대로 행렬을 생성하여라(s2)

봄     여름

가을  겨울

 

3) s2에서 여름과 겨울만 조회하여라

 

4) s2에서 초봄, 초가을의 값을 갖는 행을 추가하여라

 

5) s2에 초여름, 초겨울, 한겨울 값을 갖는 컬럼을 추가하여라

 

 

 

 

 

배열(array)

배열은 사실상 다차원 객체이며(다차원을 지원하는 자료구조), 단 하나의 데이터 타입으로만 구성이 가능하다. 주로 영상이나 음성, 이미지, 텍스트 등의 비정형 데이터 분석 시 사용된다.

 

1. 생성

array(data =  ,              # 데이터

          dim =  ,               # 차원

          dimnames = )     # 행, 열, 층 이름

 

 

위처럼 생성이 가능하다.

 

 

2. 구조 변경

Line 1은 구조를 확인하는 것으로 3열 4행 5층이라고 읽는다.

 

 

3. 색인

 

차원 축소가 발생하며 여기서도 차원 축소 방지를 위해서는 drop 옵션을 사용한다.

 

 

728x90
반응형