2013-02-28 28 views
12

Voglio ripetere un vettore N volte ma in base all'elemento, non all'intero vettore.Ripeti ricorsivi elementi vettoriali N volte ciascuno

Per esempio, ho:

v <- c('a', 'b') 

dire che voglio ripetere n volte:

n <- 3 

voglio:

vfill <- c(rep(v[1], n), rep(v[2], n)) 
print(vfill) 
[1] "a" "a" "a" "b" "b" "b" 

mio migliore soluzione ad oggi:

ffillv <- function(i) rep(v[i], n) 
c(sapply(seq_len(length(v)), ffillv)) 

Sono interessato a veloci & soluzioni scalabili, per esempio utilizzando rbind, plyr, ecc

+4

Perché non 'rep (v , ciascuno = 3) '? Puoi chiarire cosa stai cercando di fare? – A5C1D2H2I1M1N2O1R2T1

+0

@AnandaMahto Esattamente quello che stavo cercando. Ho una funzione obiettivo piuttosto complessa da ottimizzare, costruita su dati "irregolari". Uso la filosofia plyr split-apply-combine. Nel processo di analisi, volevo accedere ad alcuni dati intermedi di basso livello e combinarli in un data.frame. Ho imparato un modo per combinare come volevo usare ldply, ma quel particolare modo ha richiesto il tipo di espansione che ho chiesto. Per il tuo punto, il modo in cui lo sto facendo potrebbe non essere ottimale! Potrei avere ulteriori domande nel prossimo futuro a riguardo. Grazie. – Patrick

risposta

28
rep(v, each=3) 

o

rep(v, each=n) 

in cui è stato definito n

Problemi correlati