2013-06-23 40 views
5

使用R,我想高效地識別序列中的哪些值缺失。我已經寫下了我如何做的例子。一定會有更好的辦法。有人可以幫忙嗎?識別序列中的缺失值/執行兩個列表之間的不對稱差異

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

我建議你修改問題的標題,因爲R中遺漏值有另外的意義... – agstudy

+0

@agstudy你能提出好的建議? –

+0

例如,如何執行2個列表之間的不對稱差異?:) – agstudy

回答

10

另一種可能的解決方案

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

如果兩個序列是因素,如果基礎因子集合相同,似乎'setdiff()'不會識別差異。然而'%in%'方法識別實際序列中的差異。 –

1

match使用另一種選項(類似於%in%

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

使用grep()

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

你可能是「懶惰」,並使用collapse = ^|$,但使用上述精度準確。

使用grepl()

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

相關問題