rep() per ripetere i valori
Ripeta valori e vettori con rep(), gli argomenti times ed each.
rep() per ripetere i valori è una lezione R Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento R Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso R Academy include 4 lezioni in totale.
Introduzione a rep()
rep() è l'abbreviazione di replicate. Ripete valori o vettori per un numero di volte specificato. È uno degli strumenti più utili per creare dati di test strutturati, dataset bilanciati e riempire vettori con valori predefiniti.
# 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) — ripetere l'intero vettore
Quando x è un vettore e times è un singolo intero, rep() ripete l'intero vettore quel numero di volte. La lunghezza del risultato è 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) — ripetere ogni elemento
L'argomento each ripete ogni singolo elemento prima di passare a quello successivo. Questa è la differenza fondamentale rispetto a times: each ripete gli elementi nella loro posizione.
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(...)) — ripetizioni variabili
Quando times è un vettore della stessa lunghezza di x, ogni elemento di x viene ripetuto per il numero di volte corrispondente. In questo modo si ottiene un controllo dettagliato sulle ripetizioni.
# 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() — ripetere fino a una lunghezza fissa
rep_len(x, length.out) ripete il vettore x finché il risultato non raggiunge esattamente length.out elementi. La ripetizione è ciclica: il vettore ricomincia dall'inizio quando necessario.
# 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, '
')Combinare times ed each
È possibile usare insieme times ed each per creare schemi di ripetizione più complessi. R applica prima each (espandendo ogni elemento), quindi ripete il vettore risultante times volte.
# 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), '
')Creare etichette di gruppo bilanciate
Un uso classico di rep() consiste nel creare etichette di gruppo bilanciate per gli esperimenti, quando si desidera avere lo stesso numero di osservazioni in ogni gruppo.
# 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), '
')
}Ripetere valori logici
rep() funziona con qualsiasi tipo di dato, inclusi i valori logici. È utile per creare maschere, flag o schemi alternati 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() per riempire una matrice
È possibile usare rep() per riempire rapidamente le matrici con dati organizzati secondo uno schema. Poiché matrix() accetta un vettore come input, combinarla con rep() facilita la creazione di matrici con pattern.
# 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, '
')Espandere una tabella riepilogativa
Un uso pratico di rep() con times variabile consiste nel convertire una tabella di frequenza in un vettore di dati grezzi. Se sapete quante volte è comparso ogni valore, rep() ricostruisce le osservazioni.
# 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))Riepilogo di rep()
Ecco un rapido riferimento a rep():
rep(x, times = n)— ripete l'intero vettore x n volterep(x, each = n)— ripete ogni elemento n volterep(x, times = c(...))— ripetizioni variabili per elementorep_len(x, n)— ripete ciclicamente x fino a raggiungere esattamente n elementi- Funziona con qualsiasi tipo: numerico, carattere, logico, 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), '
')Verifica rapida
Che cosa produce rep(c(1, 2), each = 3)?
Riepilogo: rep() per ripetere valori
Ottimo! Ecco i concetti principali di questa lezione:
rep(x, times)ripete l'intero vettore;rep(x, each)ripete ogni elemento singolarmente- Passare un vettore a
timesconsente di specificare un numero variabile di ripetizioni per ogni elemento rep_len(x, n)ripete ciclicamente x fino a produrre esattamente n elementi- Usi comuni: etichette di gruppo bilanciate, maschere, espansione di tabelle di frequenza, matrici con pattern
- Funziona allo stesso modo con dati numerici, carattere e logici
# 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), '
')Domande Frequenti
La lezione «rep() per ripetere i valori» è gratuita?
Sì — il testo completo di «rep() per ripetere i valori» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso R Academy, passa a CoddyKit PRO. Il corso R Academy include 4 lezioni in totale.
Cosa imparerò in «rep() per ripetere i valori»?
Ripeta valori e vettori con rep(), gli argomenti times ed each. Eserciti R Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare R Academy?
Non è richiesta alcuna esperienza precedente. R Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «rep() per ripetere i valori»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione R Academy?
Sì. Ogni lezione R Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- L'operatore due punti per gli intervalli interi
- seq() per sequenze personalizzate
- rep() per ripetere i valori
- Vettori e sequenze con nomi