seq_along() 사용하기
Coddy R 여정의 기초 섹션에 포함된 레슨 — 78개 중 64번째.
때때로 벡터 내 요소의 값과 위치가 모두 필요할 때가 있습니다. 요소들을 직접 반복하는 방식은 깔끔하지만, 인덱스에 접근할 수는 없습니다. seq_along() 함수는 모든 벡터에 대해 인덱스 시퀀스를 생성함으로써 이 문제를 해결합니다.
seq_along() 함수는 1부터 벡터의 길이까지의 시퀀스를 반환합니다:
fruits <- c("apple", "banana", "cherry")
print(seq_along(fruits))출력:
[1] 1 2 3이러한 인덱스를 반복함으로써 위치와 값 모두에 접근할 수 있습니다:
fruits <- c("apple", "banana", "cherry")
for (i in seq_along(fruits)) {
cat(i, ":", fruits[i], "\n")
}출력:
1 : apple
2 : banana
3 : cherry이 접근 방식은 특정 위치의 요소를 수정하거나 요소를 이웃 요소와 비교해야 할 때 특히 유용합니다. seq_along()을 사용하는 것이 1:length(vec)보다 안전합니다. 빈 벡터를 올바르게 처리하여 1:0 대신 빈 시퀀스를 반환하기 때문입니다.
챌린지
쉬움쉼표로 구분된 숫자가 포함된 한 줄의 입력을 받게 됩니다 (예: 10,20,30,40,50).
인덱스와 함께 벡터를 반복하기 위해 seq_along()을 사용하세요:
- 쉼표로 구분된 입력으로부터 벡터를 생성합니다.
seq_along()을 사용하여 벡터를 루프하며 인덱스와 값을 모두 가져옵니다.- 각 요소에 대해 인덱스, 값, 그리고 해당 지점까지의 누적 합계(1번 위치부터 현재 위치까지의 모든 요소의 합)를 출력합니다.
cat()을 사용하여 다음 형식을 따르고: Position X: VALUE (Running total: TOTAL) 뒤에 줄바꿈을 추가하세요.
예를 들어, 입력이 다음과 같다면:
5,10,15,20출력은 다음과 같아야 합니다:
Position 1: 5 (Running total: 5)
Position 2: 10 (Running total: 15)
Position 3: 15 (Running total: 30)
Position 4: 20 (Running total: 50)설명: 1번 위치에서 값은 5이고 누적 합계는 5입니다. 2번 위치에서 값은 10이고 누적 합계는 5+10=15입니다. 3번 위치에서 값은 15이고 누적 합계는 5+10+15=30이며, 이런 방식으로 계속됩니다.
힌트: i번째 위치까지의 누적 합계를 계산하려면 sum(vector[1:i])를 사용하세요.
치트 시트
seq_along() 함수는 벡터의 길이만큼 1부터 시작하는 인덱스 시퀀스를 생성합니다:
fruits <- c("apple", "banana", "cherry")
print(seq_along(fruits))
# 출력: [1] 1 2 3루프에서 seq_along()을 사용하여 인덱스와 값에 모두 접근하세요:
fruits <- c("apple", "banana", "cherry")
for (i in seq_along(fruits)) {
cat(i, ":", fruits[i], "\n")
}
# 출력:
# 1 : apple
# 2 : banana
# 3 : cherryseq_along()을 사용하는 것이 1:length(vec)보다 안전합니다. 빈 벡터를 올바르게 처리하여 1:0 대신 빈 시퀀스를 반환하기 때문입니다.
직접 해보기
# 입력 읽기
con <- file("stdin", "r")
input_line <- suppressWarnings(readLines(con, n = 1))
close(con)
# 쉼표로 구분된 문자열을 숫자 벡터로 변환
numbers <- as.numeric(strsplit(input_line, ",")[[1]])
# TODO: 아래에 코드를 작성하세요
# seq_along()을 사용하여 벡터를 순회하세요
# 각 위치에 대해 인덱스, 값, 그리고 누적 합계를 출력하세요
# cat()을 사용하여 다음 형식으로 출력하세요: Position X: VALUE (Running total: TOTAL)\n이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.