2011-08-08 8 views

Respuesta

63

No hay necesidad de apply(), sólo tiene que utilizar paste():

R> d <- c("Mon","Tues","Wednes","Thurs","Fri","Satur","Sun") 
R> week <- paste(d, "day", sep="") 
R> week 
[1] "Monday" "Tuesday" "Wednesday" "Thursday" 
[4] "Friday" "Saturday" "Sunday" 
R> 
+1

+1 porque parece haber sido el primero – Andrie

+2

+ 1 La próxima vez no me detendré para mejorar el formato del código de la pregunta primero. ;) – joran

+2

+1 Darn it, vencido por un miserable 32 segundos –

9

Otros ya han indicado que desde paste se vectorizado, no hay necesidad de usar apply en este caso.

Sin embargo, para responder a su pregunta: apply se utiliza para una matriz o data.frame. Cuando se desea aplicar una función a través de una lista (o un vector) a continuación, utilizar lapply o sapply (una variante de lapply que simplifica los resultados):

sapply(d, paste, "day", sep="") 
     Mon  Tues  Wednes  Thurs   Fri  Satur 
    "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" 
     Sun 
    "Sunday" 
+1

@pedrosaurio Tengo que señalar que si usas 'sapply' para este problema específico sería enormemente ineficiente. Utilice la forma ya vectorizada de 'pegar', como @DirkEddelbuettel sugirió. – Andrie

+0

@DirkEddelbuettel Gracias, al principio estaba un poco confundido por la respuesta que debería marcar como la buena. Como la respuesta de Andrie fue la respuesta "real", pensé que debería seleccionarse como la buena, pero si es un método incorrecto y creará confusión para futuras referencias, lo cambiaré. Gracias de nuevo – pedrosaurio

Cuestiones relacionadas