본문 바로가기
프로그래밍언어(코딩)/R

[R 공략집] 벡터에서 데이터 가져오기

by 북마크한 취미생활 2020. 9. 10.

지난 포스팅에서는 벡터를 생성하는 여러 가지 방법들에 대해서 알아봤습니다. 이번 포스팅에서는 이렇게 생성된 벡터에서 데이터를 가져오는 방법에 대해서 알아보도록 하겠습니다.

| 인덱스를 통한 벡터 데이터 가져오기

이전에 벡터에 대해 설명을 드렸을 때 벡터는 '동일한 데이터형 박스가 연속해서 있는 것'이라고 말씀을 드렸고, 아래와 같은 형태의 벡터 상자로 구성되어 있다고 생각하면 쉽게 벡터의 특성을 이해할 수 있다고 말씀드렸습니다.

벡터 상자 그림에 대해 조금 더 설명을 드리기 위해 't1 <- c(101:104)'로 101부터 104까지의 연속된 데이터의 벡터를 생성을 합니다. 벡터를 생성을 하면 아래와 같이 't1'이라는 이름표가 붙은 정수형 벡터가 생성이 됩니다.

이렇게 벡터가 생성이 되면 벡터는 각 상자를 구분하기 위해 첫 번째 상자는 1번, 두 번째 상자는 2번과 같이 '위치(인덱스) 값'을 가지게 됩니다.

즉, 벡터형에서 특정 상자의 값을 확인하려면, '이름표[위치]' 형태로 값을 얻어 올 수 있게 됩니다.
(※ 이해하기 쉽게 '이름표[위치]'라고 표현을 하였으나 '벡터명[인덱스 값]'이 좀 더 명확한 표현입니다.)
예를 들어 t1에서 2번째 상자에 어떤 값이 들어있는지 확인한다면, 't1[2]'라고 입력하면 값을 알 수 있습니다. 쉽게 설명을 드리면 t1이라는 이름표가 붙은 벡터를 찾고, 2번째 상자를 찾아가고, 돋보기로 해당 인덱스의 값을 들여다 보고 어떤 값이 있는지 알아낸다고 생각하시면 됩니다.

▲ t1[2] 실행

그러면 벡터에서 데이터를 실습을 위해 RStudio를 실행하여 'Ctrl + L'을 눌러 콘솔 화면을 클리어한 다음 아래의 코드를 입력합니다.
(주석(#) 라인은 입력하지 않으셔도 됩니다)

# 101부터 104까지 연속된 숫자의 벡터 생성
t1 <- c(101:104) 

# t1의 내용을 출력함
t1

# t1의 첫번째 값을 출력함
t1[1]

# t1의 네번째 값을 출력함
t1[4]

해당 코드를 입력을 하면 인덱스를 통해 '원소 값'에 접근함을 볼 수 있습니다.
다른 책을 보시면 제가 '벡터 상자값'이라고 표현한 것을 '원소 값' 혹은 '요소 값'이라고 표현을 합니다. 이것이 정식 표현이고 제가 이해를 편하게 하기 위해서 이렇게 용어를 사용한다는 점 참고해 주시길 바랍니다.

| 인덱스를 통한 벡터 데이터 변경

아래와 같은 형식으로 벡터에 저장된 데이터를 변경할 수 있습니다.
벡터명[인덱스] <- 데이터

앞서 설명드린 t1에는 아래와 같이 데이터가 들어 있습니다.

기존에 들어 있는 t1[2]번 상자에 값을 변경을 하려면 't1[2] <- 202'라고 코드를 입력하면, t1의 두 번째 들어 있는 '102' 값 대신 '202'란 값이 들어가게 됩니다.

벡터 데이터 변경 실습을 위해 아래의 코드를 RStudio의 콘솔 화면에서 실행해 보시길 바랍니다.

# t1에 있는 값을 출력
t1

# t[2]에 202값으로 교체
t1[2] <- 202

# 다시 t1의 값을 확인
t1

코드를 실행하면 t1[2]의 데이터가 '101'에서 '202'로 변경됨을 볼 수 있습니다.

늘 포스팅 마지막에 말씀드리지만 직접 타이핑을 치며 확인을 해야지 프로그램에 익숙해질 수 있습니다. 또한 궁금한 부분은 직접 확인해 봐야지 그것이 실력이 쌓입니다. 제가 말씀을 드리지 않았는데, t1의 범위를 벗어난 값인 't1[0]', 't1[5]'를 입력하면 어떻게 될까요? 한번 확인해 보시고 그 이유가 무엇인지 생각해 보시길 바랍니다.

긴 글 읽어 주셔서 감사드리고, 포스팅을 보시는 분들의 R 프로그램의 실력이 조금씩 향상됨을 기대해 봅니다.

반응형

'프로그래밍언어(코딩) > R' 카테고리의 다른 글

[R 공략집] 다양한 벡터 생성 방법  (0) 2020.09.08
[R 공략집] 벡터  (1) 2020.08.20
[R 공략집] 데이터 타입  (0) 2020.08.19
[R 공략집] 기본 연산자  (0) 2020.08.17
[R 공략집] 변수 사용하기  (0) 2020.08.16

댓글