使用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)
答案 0 :(得分:12)
另一种可能的解决方案
setdiff(full.list,data.list)
答案 1 :(得分:2)
full.list[!full.list %in% data.list]
答案 2 :(得分:1)
使用match
的另一个选项(类似于%in%
)
full.list[!match(full.list,data.list,nomatch=FALSE)]
[1] 3 6 10
答案 3 :(得分:0)
使用grep()
:
grep(paste("^", data.list, "$", sep = "", collapse = "|"), full.list, invert = TRUE)
您可能会“懒惰”并使用collapse = ^|$
,但请使用上述内容以获得准确的精确度。
使用grepl()
:
full.list[!grepl(paste("^", data.list, "$", sep = "", collapse = "|"), full.list)]