2010-05-12 32 views
9

Estoy tratando de repetir los elementos del vector a, b número de veces. Es decir, a = "abc" debería ser "aabbcc" si y = 2.Repita elementos del vector en R

¿Por qué no funciona ninguno de los siguientes ejemplos de código?

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

y desde el paquete plyr,

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

Sé que me falta algo muy obvio ...

Respuesta

10

Asumiendo que a es un vector, sapply creará una matriz que sólo necesita ser colapsado de nuevo en un vector:

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

debe crear el siguiente resultado:

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

Olvidé sobre colapsarlo. Esto obviamente funciona. No estoy seguro de por qué plyr's aaply no. Oh bien. – bshor

16

a no es un vector, que tienen que dividir la cadena en un solo caracteres, por ejemplo

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

El "each =" argumento para rep es notable, también. :-) –

+0

Cometí un error en mi descripción de la pregunta, una de hecho era un vector, por ejemplo, a = c ("a", "b", "c"). Si no fuera así, tu solución es obviamente correcta. ¡Gracias! – bshor

Cuestiones relacionadas