2011-08-08 9 views

Odpowiedz

63

Nie potrzeba apply(), wystarczy użyć 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, ponieważ wydaje się, że pierwszy – Andrie

+2

+ 1 Następnym razem nie będę zatrzymywał się, by najpierw poprawić formatowanie kodu pytania. ;) – joran

+2

+1 Niech to szlag, pokonany przez nędzne 32 sekundy –

9

Pozostały już wskazano, że od paste jest wektoryzowane, nie ma potrzeby korzystania apply w tym przypadku.

Jednak, aby odpowiedzieć na twoje pytanie: apply jest używany do tablicy lub data.frame. Kiedy chcesz zastosować funkcję na liście (lub wektor), a następnie użyć lapply lub sapply (wariant lapply że upraszcza wyniki):

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

@pedrosaurio Muszę zaznaczyć, że jeśli użyjesz 'sapply' dla tego konkretnego problemu, byłoby to bardzo nieefektywne. Użyj już zwektoryzowanej formy 'paste', jak zasugerował @DirkEddelbuettel. – Andrie

+0

@DirkEddelbuettel Dzięki, byłem początkowo nieco zdezorientowany, dla której odpowiedzi powinienem zaznaczyć jako dobry. Jako że odpowiedź Andrie była "prawdziwą" odpowiedzą, myślałem, że powinna być wybrana jako dobra, ale jeśli jest to zła metoda i spowoduje zamieszanie na przyszłość, zmienię ją. Dzięki jeszcze raz – pedrosaurio

Powiązane problemy