본문 바로가기
5. 자료구조/1) 스칼라&벡터 | c()

R 에서 벡터 정의, 원소 이름 지정

by makhimh 2019. 11. 29.
반응형

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


반응형

댓글