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

R 벡터의 인덱싱, 원소 추가/수정/제거

by makhimh 2020. 1. 29.
반응형

R 벡터의 인덱싱, 원소 추가/수정/제거


1. 인덱싱


벡터를 하나 정의합시다. 


> a=c(1,2,3,4,5)

> a

[1] 1 2 3 4 5


1) 단일원소


원소에 접근하는 방법은 대괄호 [ ] 를 이용하는 것입니다. 예를 들어 첫번째 원소에 접근한다면 아래와 같이 입력하면 됩니다. 


> a[1]

[1] 1


여기에 입력된 1을 index라고 합니다. 


2) 범위


index를 구간으로 입력할 수도 있습니다. 1부터 3까지의 원소에 접근해봅시다.


> a[1:3]

[1] 1 2 3


1:3이 마치 새로운 기호처럼 보이는데, c(1,2,3)인 벡터와 같습니다. 아래와 같이 입력해도 됩니다.


> a[c(1,2,3)]

[1] 1 2 3


위 원리를 이용하여 1,3,5번째 원소에 접근해봅시다. 


> a[c(1,3,5)]

[1] 1 3 5


다른 변수를 이용한 인덱싱도 가능합니다.


> b=c(1,2)

> a[b]

[1] 1 2


3) 음수


인덱스에 음수를 입력하면, 해당 번호의 원소가 제외됩니다.


> a[-1]

[1] 2 3 4 5


> a[-2]

[1] 1 3 4 5


> a[c(-1,-3)]

[1] 2 4 5


-1:-3을 입력하면 1,2,3번째 원소가 제외됩니다.


> a[-1:-3]

[1] 4 5



4) 비교연산자


인덱스 자리에 논리연산자를 넣어도 됩니다. 예를들어 2보다 큰 원소가 출력할 경우 아래와 같이 입력합니다. 


> a[a>2]

[1] 3 4 5


5) 논리값


논리값을 입력하면 TRUE는 출력, FALSE는 제외됩니다. 꼭 원소의 개수만큼 입력할 필요는 없습니다. 비어있는 자리도 출력됩니다. 


> a[c(TRUE,FALSE)]

[1] 1 3 5





2. 원소 추가


인덱싱을 이용하여 원소를 추가합니다. 벡터를 하나 정의합시다. 


> v=c(1,2,3)


네번째 원소를 추가해보겠습니다. 


> v[4]=5

> v

[1] 1 2 3 5


위에서 배운 인덱싱을 응용하면 다양한 방법으로 원소를 추가할 수 있습니다.


> v[c(5,6)]=c(10,30)

> v

[1]  1  2  3  5 10 30





3. 원소 수정


인덱싱을 이용하여 원소를 수정합니다. 벡터를 하나 정의합시다. 


> v2=c(1,3,5)


세번째 원소를 수정해보겠습니다. 


> v2[3]="a"

> v2

[1] "1" "3" "a"


문자형이 숫자형보다 우선되므로, 모든 원소가 문자형으로 바뀝니다. 


동시에 여러 원소도 수정이 가능합니다. 


> v2[c(1,2)]=c(1,5)

> v2

[1] "1" "5" "a"




4. 원소 제거


인덱싱을 이용하여 원소를 수정합니다. 벡터를 하나 정의합시다. 


> v3=c(1,3,5,7,9)


다섯번째 원소를 제거합시다. 


> v3=v3[-3]

> v3

[1] 1 3 7 9


1,2,3,4 원소만 남기는 방식으로 제거할 수도 있습니다.


> v3=c(1,3,5,7,9)

> v3=v3[1:4]

> v3

[1] 1 3 5 7



원소 추가,수정,제거의 원리는 동일합니다. 인덱싱 원리만 잘 이해하면 다양하게 응용이 가능합니다. 

반응형

댓글