2016-08-18 3 views
2

Ich habe ein einfaches Problem und ich fand eine sehr komplizierte (C stilvolle) Lösung und ich frage mich, ob es etwas viel einfacher als das ist. Ich habe zwei Arrays:R - Verketten String-Elemente basierend auf einem anderen Array

y <- c("A","B","C","D","E") 
    d <- c(1,3,1) 

und ich brauche d ein Array als

"A","B-C-D","E" 

so basierend auf der Verteilung zu erhalten, aggregieren die Elemente y durch eine - getrennt (oder einen anderen Separator) .

I tat dies

old_y <- y 
y <- NULL 

k <- 1 
for (i in 1:length(d)) { 
    y[i] <- as.character(old_y[k]) 
    j <- 1 
    while(d[i]>j) { 
    y[i] <- paste0(y[i], "-", as.character(old_y[k+j])) 
    j <- j + 1 
    } 
    k <- k + d[i] 
} 

Antwort

4

tapply Wir können auf 'y' durch die Sequenz von 'D' durch 'd' replizierten paste gruppiert und die Elemente der 'y' zusammen.

+1

Wow !! einfach wow! :) – Stefano

Verwandte Themen