R 에서 벡터 정의, 원소 이름 지정
1. 스칼라 정의
R에서 스칼라는 원소의 개수가 1인 벡터입니다. 따라서 벡터가 스칼라를 포함하는 개념입니다. 스칼라는 아래와 같이 정의합니다.
> a=c(3)
> a
[1] 3
원소가 1개인 경우에는 c를 생략해줄 수 있습니다.
> a=3
> a
[1] 3
2. 벡터 정의
벡터는 아래와 같이 정의합니다.
> a=c(1,2,3)
> a
[1] 1 2 3
괄호 앞에 쓰여진 c는 concatenate(연결된,연쇄된)의 줄임말입니다.
벡터는 숫자형 뿐 아니라 문자형,논리형으로도 정의가 가능합니다.
> v1=c("a","b","c")
> v1
[1] "a" "b" "c"
> v2=c(TRUE,TRUE,FALSE)
> v2
[1] TRUE TRUE FALSE
만약 숫자와 문자가 둘다 원소로 들어간 경우에는 어떻게 될까요?
> v1=c(1,2,"a")
> v1
[1] "1" "2" "a"
전부 문자형으로 변합니다. 숫자형보다 문자형이 우선입니다.
숫자형과 논리형은 어떨까요?
> v1=c(1,2,TRUE)
> v1
[1] 1 2 1
숫자형이 됩니다. 논리형보다 숫자형이 우선입니다.
R에서 정의되는 벡터는 열벡터일까요 행벡터일까요? 확인하는 방법은 행렬곱을 이용하는 것입니다.
원소가 2개인 벡터와, 2행2열의 행렬을 정의합시다.
> a=c(1,2)
> m=matrix(c(1,2,3,4),nrow=2)
> a
[1] 1 2
> m
[,1] [,2]
[1,] 1 3
[2,] 2 4
a와 m의 행렬곱을 하겠습니다. %*% 연산자를 사용합니다.
> a%*%m
[,1] [,2]
[1,] 5 11
> m%*%a
[,1]
[1,] 7
[2,] 10
두 곱이 다 정의되는 것으로 보니, r에서 정의되는 벡터는 상황에 따라 행벡터가 되기도 하고 열벡터가 되기도 하는 것 같네요.
3. 원소 이름 지정
벡터의 원소 이름을 지정하는 방법은 두가지가 있습니다. 먼저 첫번째 방법입니다. 원소마다 변수 이름을 입력하는 것입니다.
> v=c(a=1,b=2,c=3)
> v
a b c
1 2 3
두번째 방법은 names 함수를 사용하는 것입니다.
> v2=c(1,2,3)
> names(v2)=c("a","b","c")
> v2
a b c
1 2 3
4. 자료구조 확인
> a=c(1,2)
> class(a)
[1] "numeric"
> mode(a)
[1] "numeric"
> str(a)
num [1:3] 1 2 3
> typeof(a)
[1] "double"
> is.vector(a)
[1] TRUE
'5. 자료구조 > 1) 스칼라&벡터 | c()' 카테고리의 다른 글
R 벡터 인덱싱 뒤에서부터 몇개 (0) | 2020.12.08 |
---|---|
R 벡터 인덱싱 '끝까지' (0) | 2020.12.08 |
[R] 벡터원소 이름으로 인덱싱 (0) | 2020.11.30 |
[R] 벡터의 비교 (0) | 2020.11.30 |
R 벡터의 인덱싱, 원소 추가/수정/제거 (0) | 2020.01.29 |
댓글