0Pricing
R Academy · Lekcja

rep() dla powtarzających się wartości

Powtarzaj wartości i wektory za pomocą rep(), argumentów times i each.

rep() dla powtarzających się wartości to bezpłatna lekcja R Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej R Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs R Academy zawiera 4 lekcji w sumie.

Wprowadzenie do rep()

rep() jest skrótem od replicate. Powtarza wartości lub wektory określoną liczbę razy. Jest jednym z najbardziej przydatnych narzędzi do tworzenia uporządkowanych danych testowych, zrównoważonych zbiorów danych i wypełniania wektorów wartościami domyślnymi.

# 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) — powtarzanie całego wektora

Gdy x jest wektorem, a times pojedynczą liczbą całkowitą, rep() powtarza cały wektor określoną liczbę razy. Długość wyniku wynosi 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) — powtarzanie każdego elementu

Argument each powtarza każdy pojedynczy element, zanim funkcja przejdzie do następnego. To kluczowa różnica w porównaniu z times: each powtarza elementy bezpośrednio w ich miejscu.

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(...)) — zmienna liczba powtórzeń

Gdy times jest wektorem o tej samej długości co x, każdy element x jest powtarzany odpowiednią liczbę razy. Zapewnia to precyzyjną kontrolę nad powtarzaniem.

# 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() — powtarzanie do stałej długości

rep_len(x, length.out) powtarza wektor x, aż wynik osiągnie dokładnie length.out elementów. Powtarzanie odbywa się cyklicznie — w razie potrzeby funkcja zaczyna ponownie od początku wektora.

# 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, '
')

Łączenie times i each

Argumentów times i each można używać razem do tworzenia bardziej złożonych wzorców powtórzeń. R najpierw stosuje each (powielając każdy element), a następnie powtarza otrzymany wektor times razy.

# 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), '
')

Tworzenie zrównoważonych etykiet grup

Klasycznym zastosowaniem rep() jest tworzenie zrównoważonych etykiet grup na potrzeby eksperymentów — gdy chcą Państwo uzyskać taką samą liczbę obserwacji w każdej grupie.

# 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), '
')
}

Powtarzanie wartości logicznych

rep() działa z dowolnym typem danych, w tym z wartościami logicznymi. Jest to przydatne podczas tworzenia masek, flag lub naprzemiennych wzorców 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() do wypełniania macierzy

Funkcji rep() można użyć do szybkiego wypełniania macierzy danymi o określonym wzorcu. Ponieważ matrix() przyjmuje wektor jako dane wejściowe, połączenie obu funkcji ułatwia tworzenie macierzy wzorcowych.

# 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, '
')

Rozwijanie tabeli podsumowującej

Praktyczne zastosowanie rep() ze zmiennym argumentem times: przekształcanie tabeli częstości z powrotem w wektor surowych danych. Jeśli znają Państwo liczbę wystąpień każdej wartości, rep() odtworzy obserwacje.

# 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))

Podsumowanie rep()

Oto krótkie zestawienie informacji o rep():

  • rep(x, times = n) — powtarza cały x n razy
  • rep(x, each = n) — powtarza każdy element n razy
  • rep(x, times = c(...)) — zmienna liczba powtórzeń dla poszczególnych elementów
  • rep_len(x, n) — powtarza cyklicznie x, aby uzyskać dokładnie n elementów
  • Działa z dowolnym typem: numerycznym, tekstowym, logicznym i factor
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), '
')

Szybkie sprawdzenie

Jaki wynik zwraca rep(c(1, 2), each = 3)?

Podsumowanie: rep() do powtarzania wartości

Doskonale! Najważniejsze informacje z tej lekcji:

  • rep(x, times) powtarza cały wektor; rep(x, each) powtarza każdy element osobno
  • Przekazanie wektora do times umożliwia określenie zmiennej liczby powtórzeń dla poszczególnych elementów
  • rep_len(x, n) powtarza cyklicznie x, aż zostanie utworzonych dokładnie n elementów
  • Typowe zastosowania: zrównoważone etykiety grup, maski, rozwijanie tabel częstości, macierze wzorcowe
  • Działa tak samo z danymi numerycznymi, tekstowymi i logicznymi
# 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), '
')

Często zadawane pytania

Czy lekcja „rep() dla powtarzających się wartości” jest bezpłatna?

Tak — pełny tekst „rep() dla powtarzających się wartości” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu R Academy, przejdź na CoddyKit PRO. Kurs R Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „rep() dla powtarzających się wartości”?

Powtarzaj wartości i wektory za pomocą rep(), argumentów times i each. Ćwiczysz R Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć R Academy?

Nie wymagamy żadnego doświadczenia. R Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „rep() dla powtarzających się wartości”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji R Academy?

Tak. Każda lekcja R Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Operator dwukropka dla zakresów liczb całkowitych
  2. seq() dla niestandardowych sekwencji
  3. rep() dla powtarzających się wartości
  4. Nazwane wektory i sekwencje
← Powrót do R Academy