2013-06-23 21 views
5

R'yi kullanarak, bir sıradaki hangi değerlerin eksik olduğunu tanımlamak istiyorum. Nasıl yaptığımı örnek olarak yazdım. Daha iyi bir yol olmalı. Birisi yardım edebilir mi?Bir sıradaki eksik değerleri tanımlayın/iki liste arasındaki asimetrik farkı gerçekleştirin

data.list=c(1,2,4,5,7,8,9) 

full.list=seq(from = 1, to = 10, by =1) 

output <- c() 
for(i in 1:length(full.list)){ 
    holder1 <- as.numeric(any(data.list == i)) 
    output[i] <- holder1 
} 

which(output == 0) 
+1

ben başka anlamlara sahip R değerleri eksik beri sorunun başlığını değiştirmenizi öneririz ... – agstudy

+0

@agstudy bir şey önerebilir misiniz? –

+0

Örneğin, 2 liste arasındaki asimetrik fark nasıl kullanılır? :) – agstudy

cevap

10

başka bir olası çözüm

setdiff(full.list,data.list) 
2
full.list[!full.list %in% data.list] 
+0

Görünüşe göre setdiff(), iki dizge, altta yatan faktör kümeleri aynı ise, bir fark tanımlamayacaktır. Bununla birlikte, '% in%' yöntemi, gerçek sıralardaki farkları tanımlar. –

1

full.list[!match(full.list,data.list,nomatch=FALSE)] 
[1] 3 6 10 
0

grep() kullanarak (%in% benzer) match kullanılarak Başka bir seçenek:

grep(paste("^", data.list, "$", sep = "", collapse = "|"), full.list, invert = TRUE)

Sen "tembel" olarak ve collapse = ^|$ kullanmak ancak kesin doğruluğu için yukarıdaki kullanabilirsiniz.

grepl() kullanma:

full.list[!grepl(paste("^", data.list, "$", sep = "", collapse = "|"), full.list)]