2012-11-27 35 views
5

chỉ tự hỏi tại sao trùng lặp cư xử theo cách nó bằng NA:Return FALSE cho các giá trị NA nhân đôi khi sử dụng chức năng sao chép()

> duplicated(c(NA,NA,NA,1,2,2)) 
[1] FALSE TRUE TRUE FALSE FALSE TRUE 

trên thực tế

> NA == NA 
[1] NA 

là nơi có một cách để đạt được rằng nhân đôi các NA là sai, như thế này?

> duplicated(c(NA,NA,NA,1,2,2)) 
[1] FALSE FALSE FALSE FALSE FALSE TRUE 
+1

'trùng lặp' đánh dấu lần xuất hiện thứ hai (và thứ ba, thứ tư, v.v.) trùng lặp, nhưng không phải là lần xuất hiện đầu tiên. Bạn có thể sử dụng 'is.na()' để làm những gì bạn yêu cầu. – Andrie

+0

cảm ơn. Câu hỏi chính là tại sao nó có ý nghĩa để đánh dấu NA là trùng lặp. – jamborta

Trả lời

18

Bạn dùng tham số incomparables cho hàm duplicated như thế này:

> duplicated(c(NA,NA,NA,1,2,2)) 
[1] FALSE TRUE TRUE FALSE FALSE TRUE 
> duplicated(c(NA,NA,NA,1,2,2),incomparables=NA) 
[1] FALSE FALSE FALSE FALSE FALSE TRUE 

Nó xác định các giá trị mà không thể so sánh (trong trường hợp này NA) và trả về FALSE cho những giá trị đó. Xem thêm ?duplicated

+0

cảm ơn. Chính xác những gì tôi đang tìm kiếm. – jamborta

+0

+1 để đọc hướng dẫn sử dụng :-) – Andrie

+2

Tôi biết điều này rồi, tôi thề, tôi thực sự biết điều này! ;) –

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