2011-08-08 32 views

Trả lời

63

Không cần apply(), chỉ cần sử dụng 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 vì bạn dường như đã được đầu tiên – Andrie

+2

+ 1 Lần tới, tôi sẽ không dừng lại để cải thiện định dạng mã của câu hỏi trước. ;) – joran

+2

+1 Darn nó, bị đánh bại bởi một measly 32 giây –

9

khác đã chỉ ra rằng kể từ paste được vectorised, không có nhu cầu sử dụng apply trong trường hợp này.

Tuy nhiên, để trả lời câu hỏi của bạn: apply được sử dụng cho mảng hoặc khung dữ liệu. Khi bạn muốn áp dụng một hàm trên một danh sách (hoặc một vector) sau đó sử dụng lapply hoặc sapply (một biến thể của lapply rằng đơn giản hoá kết quả):

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

@pedrosaurio Tôi phải chỉ ra rằng nếu bạn sử dụng 'sapply' cho vấn đề cụ thể này thì nó sẽ cực kỳ kém hiệu quả. Sử dụng dạng đã được dán sẵn của 'dán', như @DirkEddelbuettel đề xuất. – Andrie

+0

@DirkEddelbuettel Cảm ơn, lúc đầu tôi hơi bối rối vì câu trả lời nào tôi nên đánh dấu là câu trả lời hay nhất. Khi câu trả lời của Andrie là câu trả lời 'thực', tôi nghĩ rằng nó nên được chọn là tốt nhất nhưng nếu nó là một phương pháp sai và nó sẽ tạo ra sự nhầm lẫn để tham khảo trong tương lai tôi sẽ thay đổi nó. Cảm ơn một lần nữa – pedrosaurio

Các vấn đề liên quan