벡터 슬라이싱과 인덱싱
Coddy R 여정의 기초 섹션에 포함된 레슨. 78개 중 67번째.
단일 요소에 액세스하고 벡터를 순회하는 방법을 배웠습니다. 이제 슬라이싱을 사용하여 한 번에 여러 요소를 추출하는 방법을 살펴보겠습니다. 이 기법을 사용하면 한 번의 연산으로 벡터의 일부를 가져올 수 있습니다.
여러 요소를 추출하려면 대괄호 안에 인덱스 벡터를 전달하세요:
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에서 오류가 발생합니다.
챌린지
쉬움입력은 두 줄로 주어집니다:
- 쉼표로 구분된 숫자 목록(예:
100,200,300,400,500,600,700) - 제외할 범위를 나타내는 쉼표로 구분된 두 인덱스(예:
2,5)
시작 코드는 이미 입력을 읽고 숫자 벡터를 생성합니다. 다음 네 줄을 정확히 이 순서대로 출력하세요:
- 인덱스 벡터를 사용하여 위치 1, 3, 5의 요소를 출력합니다
- 콜론 연산자를 사용하여 위치 2부터 위치 4까지의 요소를 출력합니다
- 첫 번째로 주어진 인덱스의 요소를 제외한 벡터를 출력합니다(음수 인덱싱 사용)
- 첫 번째 인덱스부터 두 번째 인덱스까지의 요소를 제외한 벡터를 출력합니다(범위와 음수 인덱싱 사용)
예를 들어 입력이 다음과 같다면:
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이 됩니다
직접 해보기
# 입력 읽기
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까지의 요소를 제외한 벡터 출력 (범위를 사용한 음수 인덱싱)이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
직접 연습해 보세요: 온라인 R 컴파일러