Vector
R을 처음 배울 때 가장 머리 아프게 했던 것 중의 하나가 바로 데이터를 담는 그릇들의 차이다.
우리가 데이터를 변수에 저장할 때, 데이터를 그릇에 어떻게 담느냐에 따라
데이터타입이 바뀌기도 하고, 관리하는 데에도 차이가 있다.
따라서 본인이 무슨 데이터 구조에서 작업을 하고 있는지는 잘 확인해야 한다.
데이트 구조에는 크게 4가지가 있다.
Vector(벡터), Matrix(메트릭스), Dataframe(데이터프레임), List(리스트)이다.
먼저 가장 단순한 벡터부터 시작을 하자면 정의는 다음과 같다.
"A vector is a sequence of data elements of the same basic type."
벡터는 하나의 타입만 담을 수 있는 가장 단순한 구조를 가진다.
숫자면 숫자, 문자면 문자, 논리면 논리~ 오로지 한 종류의 데이터 셋을
1차원처럼 생긴 것을 그릇에 담아 둔다. (이해를 돕기 위해 1차원의 말을 빌린 것이지, 사실 1차원은 아니다)
벡터는 이렇게 생겨먹었다.
x 는 numeric 자료형을, y 는 character 자료형을, z 는 logical 자료형을 담고 있다는 것이 보인다.
dim() 함수를 써서 몇 차원인지 확인해보면 NULL값이 뜬다. 1차원은 아니라는 얘기다.
Vector는 메트릭스, 데이터 프레임, 리스트 등 상위 데이터 그룹의 기초단위이기도 하며
R을 할 때 항상 사용된다고 보면 될 정도로 빈번하게 쓰인다.
이 녀석은 한 종류의 데이터만 담을 수 있다고 했듯이, 서로 다른 자료형을 담아 버리면
하나의 자료형으로 통일된다.
이를 Coercion 이라고 한다.
Coercion 되는 순서는 다음과 같다.
문자형(Character) > 복소수형(Complex) > 숫자형(Numeric) > 논리형(Logical) 이다.
# TRUE 는 1, FALSE 는 0 으로 인식되기 때문에 a 가 1 2 3 1로 반환되는 것을 확인할 수 있다.
Coercion 되는 것을 피하려면 하나의 자료형만 담아 두도록 하자!