이번에 다뤄볼 주제는 Matrix입니다.
앞서 소개를 드린것 처럼 matrix는 2차원 형태의 데이터입니다.
익숙한 엑셀 데이터처럼 2차원 표 형태라고 생각하시면 편할 것 같아요.
Matrix는 2차원 구조다보니 행(row), 열(column)이 존재합니다. 행을 row, 열을 col이라고 부르도록 할께요.
그럼 간단하게 Matrix를 만들어볼까요.
matrix(요소, row 수, col 수)를 이용하여 만들 수 있습니다.
보시는 것 처럼 숫자 1~6이 들어가 있는 matrix를 만들었어요.
첫 번째 col에 먼저 1~3이 채워지고 그다음 col에 4~6이 채워집니다.
만약 row순서대로 숫자를 채우고 싶다면 byrow=TRUE를 추가해주시면 됩니다.
보시는 것 처럼 첫 번째 row에 1,2가 먼저 채워지고 두 번째 row에 3,4가 채워집니다.
Matrix에는 row와 col의 index가 부여가 됩니다. 즉 2개의 index가 부여되며 순서는 [row, col]이에요.
예시에서 보이듯 2번째 row의 2번째 col에 해당하는 값인 5를 출력해 줍니다.
만약 하나의 값이 아닌 여러개를 동시에 출력하고 싶다면 어떻게 하면 될까요?
그 방법은 Index에 숫자 하나를 넣는 것이 아닌 vector를 넣는 것입니다.
예시에서 보이듯 z라는 matrix에서 2, 3번째 row와 1, 3번째 col에 해당하는 2, 3, 10, 11이 matrix형태로 출력됩니다.
그렇다면 일부만 뽑는것이 아니라 row전체를 뽑거나 col전체를 뽑아주려면 해당하는 index를 모두 입력해야 할까요?
꼭 그럴 필요는 없습니다.
만약 row를 뽑는다면 col에 해당하는 index를 빈칸으로 두시면 됩니다.
반대로 col을 뽑는다면 row에 해당하는 index를 빈칸으로 두시면 됩니다.
예시에서 보이듯 index를 [1, ]로 두면 z matrix의 첫 번째 row인 1, 5, 9, 13을 출력해주고, index를 [, 1]로 두면 z matrix의 첫 번째 col인 1, 2, 3, 4를 출력해줍니다.
Matirx의 요소 일부를 변경하는 방법은 vector와 마찬가지로 index로 뽑아낸 다음 할당을 하면 됩니다.
가운데 숫자만 100, 200, 300, 400으로 변경된 것을 볼 수 있어요.
Matrix의 경우 vector와 마찬가지로 한가지 형태의 데이터만 넣을 수 있습니다.
만약 문자를 넣게되면 숫자가 문자로 강제 변환됩니다.
(이 내용은 제가 이전에 올려둔 [데이터 구조]편을 참고해주세요! https://www.bicbear.com/7)
자 그렇다면 만들어진 matrix에서 row나 col을 추가하는 방법은 무엇이 있을까요?
바로 rbind(), cbind()라는 함수를 사용하는 거에요.
말 그대로 rbind는 row를 cbind는 col를 붙여주는 함수입니다.
예시에서 보이듯 vector 또는 matrix를 바로 붙일 수 있습니다. 이때 주의하셔야 할 점은 row나 col수를 맞춰줘야 하는건데요.
만약 맞추지 않고 사용한다면 경고 메시지가 뜨면서 숫자를 반복해서 넣거나, 일부가 잘릴 수 있습니다.
row 수가 3개인데 2개만 넣은 경우 숫자 하나가 반복되어 입력되고, 4개를 넣은 경우 남은 하나가 입력되지 않습니다.
예외적으로 만약 추가할 row나 col에 같은 숫자만 입력하고 싶다면 꼭 vector형태로 갯수 맞춰서 넣을 필요없이 숫자 하나만 입력해도 가능합니다.
이 다음 글에서 다뤄볼 data.frame과 matrix는 매우 많이 사용되는 데이터 구조에요!
익숙해지시면 많이 도움 되실거에요~!
'R program' 카테고리의 다른 글
[데이터 불러오기] 작업경로 설정 및 불러오기 (0) | 2019.10.20 |
---|---|
[데이터 다루기] data.frame편 (0) | 2019.09.22 |
[데이터 다루기] Factor편 (0) | 2019.09.03 |
[데이터 다루기] Vector편 (0) | 2019.09.01 |
[데이터 구조] vector? factor? matrix? data.frame? (0) | 2019.08.27 |