차원축소란 2차원이면 1차원으로, 1차원이면 0차원(스칼라)로 축소되는 것을 의미한다.
여러 복잡한 자료구조를 갖는 언어는 데이터를 표현하기 적절한 구조들을 가지고 있다.
1 이라는 숫자 하나가 있다. 이 스칼라 값을 굳이 벡터로 표현할 이유는 없다. 비효율적이기 때문이다.
1 하나로 더더욱 데이터 프레임으로 만들어주진 않는다.
그렇기 때문에 어떤 데이터가 있을 때, 그 데이터 일부를 선택하거나 추출하거나 등의 작업을 진행 하면서 출력되는 데이터 차원의 경우 굳이 원래의 데이터 차원을 유지할 필요가 없다.
예를 들어 데이터 프레임은 2차원인데 컬럼 하나를 선택하면 1차원으로 추출된다. 굳이 2차원으로 표현할 필요가 없는 것이다.
항상 색인에는 차원 축소가 포함되어 있다.
v2를 살펴보자
v2[1]은 차원 축소를 하지 않은 색인(차원을 유지하는 색인) 이며,
v2[[1]]은 차원 축소가 발생하는 색인이다.
이 글에서 작성한 적이 있는데 emp라는 데이터 프레임에서 컬럼을 추출하는 방식 중 하나가 emp[2] 이 방법이 있다. 이 방법은 가급적 쓰지 말라고 하셨는데, 이게 바로 차원을 축소하지 않겠다는 색인 방식이다. 다시 한번 테스트해보겠다.
emp[2]로 추출하니 두 번째 컬럼인 ENAME 이 추출된다. 하지만 벡터형식은 아니다. 2차원 유지된 상태이다.
벡터형식은 emp$ENAME으로 출력된 결과이다. 명확한 차원 축소가 발생하였다.
간혹 자료구조 자체가 유지되어야 할 때가 있다.
하나의 행 또는 컬럼을 뽑긴 했으나 차원이 낮아지면 안 되는 경우가 있어서 차원 축소 하지 않고 추출하는 방법이 있는 것이다.
'배우기 > 기록의 중요성' 카테고리의 다른 글
R 과 R Studio 설치하기(os: windows) (0) | 2023.12.02 |
---|---|
[R] NA와 NULL의 차이 (0) | 2023.11.23 |
[R]데이터 저장 방법(행 방향 저장? 열 방향 저장?) (0) | 2023.11.22 |
[R]key-value를 이해하기 위한 과정 (0) | 2023.11.22 |
[SQL, Oracle] 이해한대로 써보는 delete와 truncate의 차이(High Water Mark, HWM) (0) | 2023.11.12 |