Tôi mới sử dụng R và đang cố gắng xử lý họ ứng dụng chức năng. Cụ thể, tôi đang cố viết hàm bậc cao hơn sẽ chấp nhận 2 vectơ ký tự, "máy chủ" và "khách" (không cần phải có cùng độ dài) và trả lại cho tôi một vector chỉ mục có cùng độ dài với "máy chủ lưu trữ ", với các yếu tố kết quả tương ứng với chỉ số của họ trong khách (NA nếu không có).Làm thế nào tôi có thể vector hóa chức năng này để trả về một vector chỉ mục?
host <- c("A","B","C","D")
guest <- c("D","C","A","F")
matchIndices <- function(x,y)
{
return(match(x,y))
}
Mã này trả về 3 như mong đợi: (? Sapply)
matchIndices(host[1],guest)
Đây là vòng lặp Tôi muốn để có thể thay thế với một áp dụng chức năng gọn gàng
Mã này "hoạt động" ở chỗ nó tạo ra kết quả dưới đây, nhưng tôi thực sự muốn kết quả là một véc-tơ, và tôi có linh cảm rằng một trong các hàm áp dụng sẽ thực hiện thủ thuật. Tôi chỉ bị mắc kẹt về cách viết nó. Bất kỳ trợ giúp sẽ được đánh giá cao nhất. Cảm ơn.
3; A; NA; B; 2; C; 1; D;
bạn chỉ có thể làm 'sapply (host, phù hợp, khách) ', không cần phải xác định' matchIndices' –
@Prasad Có, bạn có thể nhưng tôi để lại điều này giống như nó là để cho thấy làm thế nào để sapply một chức năng người dùng trong thời trang này. Lý do tôi để nó như thế này tất cả có thể được thực hiện với 'match' trực tiếp vì nó chấp nhận một đối số đầu tiên vector. Xem câu trả lời cập nhật của tôi. –
Điều này thật tuyệt vời. Cảm ơn nhiều. "match (host, guest)" là hoàn hảo. Tôi không nhận ra rằng nó có thể nhỏ gọn. – user297400