0Pricing
R Academy · 강의

반복 값을 위한 rep()

rep(), times, each 인수로 값과 벡터를 반복합니다.

반복 값을 위한 rep()은(는) CoddyKit의 무료 R Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 R Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. R Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

rep() 소개

rep()는 replicate를 줄인 이름입니다. 지정한 횟수만큼 값이나 벡터를 반복합니다. 구조화된 테스트 데이터와 균형 잡힌 데이터세트를 만들거나 벡터를 기본값으로 채울 때 매우 유용한 도구입니다.

# Repeat a single value
zeros <- rep(0, times = 5)
cat('Five zeros:', zeros, '
')

# Repeat a string
status <- rep('active', times = 4)
cat('Status:', status, '
')

rep(x, times) — 전체 벡터 반복하기

x가 벡터이고 times가 하나의 정수이면 rep()는 전체 벡터를 해당 횟수만큼 반복합니다. 출력 길이는 length(x) * times입니다.

# Repeat a vector 3 times
weekend <- c('Saturday', 'Sunday')
four_weekends <- rep(weekend, times = 4)
cat('4 weekends:', four_weekends, '
')

# Repeat numeric vector
pattern <- c(1, 2, 3)
cat('Pattern x3:', rep(pattern, times = 3), '
')

rep(x, each) — 각 요소 반복하기

each 인수는 다음 요소로 넘어가기 전에 각 개별 요소를 반복합니다. 이것이 times와 다른 핵심적인 점입니다. each는 요소를 현재 위치에서 반복합니다.

groups <- c('A', 'B', 'C')

# times: repeats whole vector
cat('times=3:', rep(groups, times = 3), '
')
# A B C A B C A B C

# each: repeats each element before next
cat('each=3 :', rep(groups, each = 3), '
')
# A A A B B B C C C

rep(x, times = c(...)) — 반복 횟수 지정하기

times가 x와 길이가 같은 벡터이면 x의 각 요소가 대응하는 횟수만큼 반복됩니다. 따라서 반복을 세밀하게 제어할 수 있습니다.

# Different number of repeats per element
fruits <- c('apple', 'banana', 'cherry')
counts <- c(3, 1, 2)

fruit_basket <- rep(fruits, times = counts)
cat('Fruit basket:', fruit_basket, '
')
# apple apple apple banana cherry cherry

# Useful for creating category labels
cat('Length:', length(fruit_basket), '
')

rep_len() — 고정된 길이까지 반복하기

rep_len(x, length.out)은 결과가 정확히 length.out개의 요소에 도달할 때까지 벡터 x를 반복합니다. 필요한 경우 벡터를 순환하며 처음으로 돌아가는 방식으로 반복합니다.

# Cycle through seasons to fill 12 months
seasons <- c('Spring', 'Summer', 'Autumn', 'Winter')
year_seasons <- rep_len(seasons, length.out = 12)
cat('12 months by season:', year_seasons, '
')

# Cycle through 1, 2, 3 for 10 items
rotation <- rep_len(1:3, length.out = 10)
cat('Rotation:', rotation, '
')

times와 each 결합하기

times와 each를 함께 사용하면 더 복잡한 반복 패턴을 만들 수 있습니다. R은 먼저 each를 적용해 각 요소를 확장한 다음, 그 결과 벡터를 times 횟수만큼 반복합니다.

# each=2 then times=3
vals <- c(1, 2)
result <- rep(vals, each = 2, times = 3)
cat('each=2, times=3:', result, '
')
# 1 1 2 2  repeated 3 times: 1 1 2 2 1 1 2 2 1 1 2 2

cat('Length:', length(result), '
')

균형 잡힌 그룹 레이블 만들기

rep()의 대표적인 활용 사례는 실험을 위한 균형 잡힌 그룹 레이블을 만드는 것입니다. 즉, 각 그룹에 동일한 수의 관측값을 배정하고 싶을 때 사용합니다.

# 5 subjects per treatment group
treatments <- c('Control', 'LowDose', 'HighDose')
n_per_group <- 5

group_labels <- rep(treatments, each = n_per_group)
cat('Group labels:', group_labels, '
')
cat('Total subjects:', length(group_labels), '
')

# Count per group
for (g in treatments) {
  cat(g, ':', sum(group_labels == g), '
')
}

논리값 반복하기

rep()는 논리값을 포함한 모든 데이터 유형과 함께 사용할 수 있습니다. 마스크, 플래그 또는 TRUE/FALSE 교대 패턴을 만들 때 유용합니다.

# Alternating TRUE/FALSE pattern
alternate <- rep(c(TRUE, FALSE), times = 5)
cat('Alternating mask:', alternate, '
')

# Apply mask to select every other element
data_vals <- 10:19
cat('Every other value:', data_vals[alternate], '
')

# Create a block pattern: 3 TRUE then 3 FALSE
block <- rep(c(TRUE, FALSE), each = 3)
cat('Block pattern:', block, '
')

행렬 채우기에 rep() 사용하기

rep()를 사용하면 패턴이 있는 데이터로 행렬을 빠르게 채울 수 있습니다. matrix()가 벡터를 입력으로 받으므로, 두 함수를 결합하면 패턴 행렬을 쉽게 만들 수 있습니다.

# Fill a 3x4 matrix with a repeating pattern
pattern <- rep(c(1, 0), times = 6)
checker <- matrix(pattern, nrow = 3, ncol = 4)
cat('Checkerboard-like matrix:
')
print(checker)

# Fill diagonal-like with rep
fill <- rep(1:4, each = 3)
cat('Repeated fill:', fill, '
')

요약 표 확장하기

가변 times와 함께 사용하는 rep()의 실용적인 활용법은 빈도표를 원시 데이터 벡터로 되돌리는 것입니다. 각 값이 몇 번 나타났는지 알고 있다면 rep()로 관측값을 재구성할 수 있습니다.

# Summary: grade frequencies
grades <- c('A', 'B', 'C', 'D')
frequencies <- c(5, 12, 8, 3)

# Reconstruct raw grade vector
raw_grades <- rep(grades, times = frequencies)
cat('Raw grades (', length(raw_grades), 'students):', raw_grades, '
')

# Verify frequency table
cat('Freq table:
')
print(table(raw_grades))

rep() 요약

다음은 rep()에 대한 간단한 참고 자료입니다:

  • rep(x, times = n) — x 전체를 n번 반복
  • rep(x, each = n) — 각 요소를 n번 반복
  • rep(x, times = c(...)) — 요소별로 반복 횟수를 다르게 지정
  • rep_len(x, n) — 정확히 n개의 요소가 될 때까지 x를 순환 반복
  • 수치형, 문자형, 논리형, 팩터 등 모든 유형에서 작동
x <- c(10, 20, 30)
cat('times=2  :', rep(x, times = 2), '
')
cat('each=2   :', rep(x, each = 2), '
')
cat('var times:', rep(x, times = c(1, 2, 3)), '
')
cat('rep_len  :', rep_len(x, 7), '
')

빠른 확인

rep(c(1, 2), each = 3)은 무엇을 생성합니까?

복습: 값 반복에 rep() 사용하기

훌륭합니다! 이번 레슨의 핵심 내용은 다음과 같습니다:

  • rep(x, times)는 전체 벡터를 반복하고, rep(x, each)는 각 요소를 개별적으로 반복합니다.
  • times에 벡터를 전달하면 요소별 반복 횟수를 다르게 지정할 수 있습니다.
  • rep_len(x, n)은 정확히 n개의 요소가 생성될 때까지 x를 순환 반복합니다.
  • 주요 활용 사례: 균형 잡힌 그룹 레이블, 마스크, 빈도표 확장, 패턴 행렬
  • 수치형, 문자형, 논리형 데이터 유형에서 동일한 방식으로 작동합니다.
# Create a balanced experiment design
treatments <- c('Placebo', 'Drug_A', 'Drug_B')
subjects_per <- 4

design <- rep(treatments, each = subjects_per)
cat('Experiment design:
')
cat(design, '
')
cat('Total N:', length(design), '
')

자주 묻는 질문

“반복 값을 위한 rep()” 강의는 무료인가요?

네 — “반복 값을 위한 rep()” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 R Academy 강의 전체를 잠금 해제할 수 있습니다. R Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“반복 값을 위한 rep()”에서 뭘 배우나요?

rep(), times, each 인수로 값과 벡터를 반복합니다. 브라우저에서 직접 실행하는 실습 코드로 R Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

R Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 R Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“반복 값을 위한 rep()” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 R Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 R Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 정수 범위를 위한 콜론 연산자
  2. 사용자 지정 시퀀스를 위한 seq()
  3. 반복 값을 위한 rep()
  4. 이름 있는 벡터와 시퀀스
← R Academy(으)로 돌아가기