7

使用 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)
4

4 回答 4

13

另一种可能的解决方案

 setdiff(full.list,data.list)
于 2013-06-23T18:33:09.513 回答
3
full.list[!full.list %in% data.list]
于 2013-06-23T18:30:26.570 回答
2

另一个选项使用match(类似于%in%

full.list[!match(full.list,data.list,nomatch=FALSE)]
[1]  3  6 10
于 2013-06-23T18:50:11.717 回答
0

使用grep()

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

您可以“懒惰”并使用collapse = ^|$但使用上述内容以获得精确的准确性。

使用grepl()

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

于 2016-05-24T01:34:59.367 回答