2012-02-06 70 views
9

Tôi có hai vectơ ký tự, x và y.So sánh vectơ ký tự trong R để tìm giá trị duy nhất và/hoặc thiếu

x <- c("a", "b", "c", "d", "e", "f", "g") 
y <- c("a",  "c", "d", "e",  "g") 

Giá trị bên trong x không bao giờ lặp lại (nghĩa là tất cả đều là duy nhất). Cũng vậy với vector y. Câu hỏi của tôi là, làm thế nào tôi có thể nhận được R để so sánh hai vectơ, và sau đó cho tôi biết những yếu tố nào đang thiếu từ y đối với x? Nói cách khác, tôi muốn R nói với tôi rằng "b" và "f" bị thiếu từ y.

(Lưu ý, trong dữ liệu thực tế của tôi, x và y mỗi chứa một vài nghìn quan sát, đó là lý do tại sao tôi muốn làm điều này theo lập trình. Có thể có một câu trả lời rất đơn giản, nhưng tôi không chắc chắn nên tìm kiếm gì trong các tệp trợ giúp R).

Nhờ bất kỳ ai có thể trợ giúp!

+1

Câu hỏi này rất giống với http://stackoverflow.com/questions/1837968/r-how-to-tell-what-is-in-one-vector -and-not-another –

+0

Xin lỗi vì bài viết tương tự! Cảm ơn bạn đã liên kết đến điều này và cảm ơn tất cả những người đã cung cấp câu trả lời. – Alexander

Trả lời

25
setdiff(x,y) 

Sẽ thực hiện công việc cho bạn.

5

Tôi nghĩ rằng điều này sẽ làm việc:

x[!(x %in% y)] 

Đầu tiên nó sẽ kiểm tra với mọi x không có trong y, sau đó nó sử dụng đó như là một chỉ mục trên bản gốc.

8
> x[!x %in% y] 
[1] "b" "f" 

hay:

> x[-match(y,x)] 
[1] "b" "f" 
> 
Các vấn đề liên quan