我有两组列表,需要检查第一个列表中的每个向量与第二个列表中的相应向量,以查看缺少的内容(我只对第一个列表中不存在的内容感兴趣第二个)。
示例数据:
> x <- list(c(100,5,1), c(1,20,5))
> y <- list(c(1,2,5,10,20,50,100), c(1,20,50,100))
我需要同时取消列表并使用setdiff(),所以我正在使用一个函数来执行这两个操作:
> lapply(x, function(a,b) setdiff(unlist(a),unlist(b)), y)
第一组的预期结果为零,第二组为5。不幸的是,这并没有找到x [2]中的5但不是y [2]。相反,这是我的结果:
[[1]]
numeric(0)
[[2]]
numeric(0)
奇怪的是,它似乎匹配5到50(可能是?),因为如果我将x [2]中的5更改为像y [2]中找不到的3这样的数字,我得到了预期结果:
> x <- list(c(100,5,1), c(1,20,3))
> lapply(x, function(a,b) setdiff(unlist(a),unlist(b)), y)
[[1]]
numeric(0)
[[2]]
[1] 3
知道发生了什么事吗?或者有更好的方法吗?
答案 0 :(得分:2)
这个怎么样?
lapply(seq_along(x), function(i) setdiff(x[[i]], y[[i]]))