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 Crep(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 razyrep(x, each = n)— powtarza każdy element n razyrep(x, times = c(...))— zmienna liczba powtórzeń dla poszczególnych elementówrep_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
timesumoż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
- Operator dwukropka dla zakresów liczb całkowitych
- seq() dla niestandardowych sekwencji
- rep() dla powtarzających się wartości
- Nazwane wektory i sekwencje