2010-05-12 9 views
9

Ich versuche, die Elemente von Vektor a, b mehrmals zu wiederholen. Das heißt, a = "abc" sollte "aabbcc" sein, wenn y = 2 ist.Wiederholen Sie Elemente des Vektors in R

Warum funktioniert keines der folgenden Codebeispiele?

sapply(a, function (x) rep(x,b)) 

und aus dem plyr Paket,

aaply(a, function (x) rep(x,b)) 

Ich weiß, dass ich etwas sehr offensichtlich abhanden bin ...

Antwort

10

Sie Angenommen a ist ein Vektor, wird sapply eine Matrix erstellen, muss nur wieder in einen Vektor kollabiert werden:

a<-c("a","b","c") 
b<-3 # Or some other number 
a<-sapply(a, function (x) rep(x,b)) 
a<-as.vector(a) 

Sollte die folgende Ausgabe erzeugen:

"a" "a" "a" "b" "b" "b" "c" "c" "c" 
+0

Vergessen, es zu kollabieren. Das funktioniert offensichtlich. Nicht sicher, warum plyrs nicht funktioniert. Naja. – bshor

16

a kein Vektor ist, haben Sie die Zeichenfolge in einzelne aufzuspalten Zeichen, z

R> paste(rep(strsplit("abc","")[[1]], each=2), collapse="") 
[1] "aabbcc" 
+2

Die "each =" Argument zu rep ist auch bemerkenswert. :-) –

+0

Ich habe einen Fehler in meiner Beschreibung der Frage gemacht, a sollte tatsächlich ein Vektor sein, zB a = c ("a", "b", "c"). Wenn nicht, ist Ihre Lösung offensichtlich richtig. Vielen Dank! – bshor

Verwandte Themen