CẬP NHẬT:
Tất cả các câu trả lời trên sẽ không hoạt động đối với các giá trị được lặp lại, câu trả lời @ BenBolker sử dụng duplicated()
vị ngữ giải quyết điều này:
full_vector[!full_vector %in% searched_vector | duplicated(full_vector)]
Câu trả lời gốc:
ở đây tôi viết một hàm nhỏ cho việc này:
exclude_val<-function(full_vector,searched_vector){
found=c()
for(i in full_vector){
if(any(is.element(searched_vector,i))){
searched_vector[(which(searched_vector==i))[1]]=NA
}
else{
found=c(found,i)
}
}
return(found)
}
vì vậy, hãy nói full_vector=c(1,2,3,4,1)
và searched_vector=c(1,2,3)
.
exclude_val(full_vector,searched_vector)
sẽ trả về (4,1), tuy nhiên câu trả lời ở trên sẽ trả về (4)
.
setdiff
là tốt hơn, vì nó thực hiện mọi thứ trong một thao tác và chỉ tham chiếu vectơ đã sửa đổi một lần.