R 识别序列中缺少的值/在两个列表之间执行不对称差异

R 识别序列中缺少的值/在两个列表之间执行不对称差异,r,missing-data,R,Missing Data,使用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] <- hol

使用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)
data.list=c(1,2,4,5,7,8,9)
full.list=seq(from=1,to=10,by=1)

输出另一种可能的解决方案

 setdiff(full.list,data.list)

使用
匹配的另一个选项(类似于%
中的
%

使用
grep()

grep(粘贴(“^”,data.list,“$”,sep=“”,collapse=“|”,full.list,invert=TRUE)

您可以“懒惰”并使用
collapse=^ |$
,但为了精确起见,请使用上述方法

使用
grepl()


full.list[!grepl(粘贴(“^”,data.list,“$”,sep=“”,collapse=“|”)full.list)]

我建议您修改问题的标题,因为R中缺少的值有另一个含义…@agstudy您可以提出一些建议吗?例如,如何在两个列表之间执行不对称差异?:)看起来像
setdiff()
如果两个序列是因子,如果基础因子集相同,则不会识别差异。然而,%
方法中的
%识别实际序列中的差异。
 setdiff(full.list,data.list)
full.list[!match(full.list,data.list,nomatch=FALSE)]
[1]  3  6 10