Menu
Coddy logo textTech

벡터 슬라이싱과 인덱싱

Coddy R 여정의 기초 섹션에 포함된 레슨 — 78개 중 67번째.

단일 요소에 접근하고 벡터를 반복하는 방법을 배웠습니다. 이제 슬라이싱(slicing)을 사용하여 한 번에 여러 요소를 추출하는 방법을 살펴보겠습니다. 이 기술을 사용하면 단 한 번의 작업으로 벡터의 하위 집합을 가져올 수 있습니다.

여러 요소를 추출하려면 대괄호 안에 인덱스 벡터를 전달하세요:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[c(1, 3, 5)])

출력:

[1] 10 30 50

콜론 연산자를 사용하여 연속된 요소의 범위를 선택할 수도 있습니다:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[2:4])

출력:

[1] 20 30 40

R에서 음수 인덱스는 강력합니다. 이들은 요소를 선택하는 대신 제외합니다:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-2])

출력:

[1] 10 30 40 50

음수 인덱스 벡터를 전달하여 여러 요소를 제외할 수 있습니다:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-c(1, 5)])

출력:

[1] 20 30 40

기억하세요: 동일한 선택 내에서 양수 인덱스와 음수 인덱스를 혼합하여 사용할 수 없습니다. numbers[c(1, -2)]와 같이 시도하면 R에서 오류가 발생합니다.

challenge icon

챌린지

쉬움

두 줄의 입력을 받게 됩니다:

  1. 쉼표로 구분된 숫자 목록 (예: 100,200,300,400,500,600,700)
  2. 제외할 범위를 나타내는 쉼표로 구분된 두 개의 인덱스 (예: 2,5)

다음 작업을 수행하세요:

  1. 쉼표로 구분된 숫자들로부터 숫자형 벡터를 생성합니다.
  2. 인덱스 벡터를 사용하여 1, 3, 5번 위치의 요소를 출력합니다.
  3. 콜론 연산자를 사용하여 2번 위치부터 4번 위치까지의 요소를 출력합니다.
  4. 첫 번째로 주어진 인덱스의 요소를 제외하고 벡터를 출력합니다 (음수 인덱싱 사용).
  5. 첫 번째 인덱스부터 두 번째 인덱스까지의 요소를 제외하고 벡터를 출력합니다 (범위와 함께 음수 인덱싱 사용).

예를 들어, 입력이 다음과 같다면:

10,20,30,40,50,60,70
3,5

출력은 다음과 같아야 합니다:

[1] 10 30 50
[1] 20 30 40
[1] 10 20 40 50 60 70
[1] 10 20 60 70

설명:

  • 1, 3, 5번 위치의 요소는: 10, 30, 50입니다.
  • 2번부터 4번 위치까지의 요소는: 20, 30, 40입니다.
  • 3번 위치를 제외하면: 10, 20, 40, 50, 60, 70입니다.
  • 3번부터 5번 위치까지 제외하면: 10, 20, 60, 70입니다.

치트 시트

벡터에서 여러 요소를 추출하려면 대괄호 안에 인덱스 벡터를 전달합니다:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[c(1, 3, 5)])  # [1] 10 30 50

연속된 요소 범위를 선택하려면 콜론 연산자를 사용합니다:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[2:4])  # [1] 20 30 40

음수 인덱스는 요소를 선택하는 대신 제외합니다:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-2])  # [1] 10 30 40 50

음수 인덱스 벡터를 전달하여 여러 요소를 제외합니다:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-c(1, 5)])  # [1] 20 30 40

중요: 동일한 선택 내에서 양수 인덱스와 음수 인덱스를 혼합하여 사용할 수 없습니다.

직접 해보기

# 입력 읽기
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
indices_input <- suppressWarnings(readLines(con, n = 1))
close(con)

# 쉼표로 구분된 숫자들을 숫자형 벡터로 파싱
numbers <- as.numeric(strsplit(numbers_input, ",")[[1]])

# 두 개의 인덱스 파싱
indices <- as.numeric(strsplit(indices_input, ",")[[1]])
idx1 <- indices[1]
idx2 <- indices[2]

# TODO: 아래에 코드를 작성하세요
# 1. 인덱스 벡터를 사용하여 1, 3, 5번째 위치의 요소를 출력하세요

# 2. 콜론 연산자를 사용하여 2번째부터 4번째 위치까지의 요소를 출력하세요

# 3. idx1 위치의 요소가 제외된 벡터를 출력하세요 (음수 인덱싱)

# 4. idx1부터 idx2까지의 요소가 제외된 벡터를 출력하세요 (범위를 사용한 음수 인덱싱)
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨