在 R 中查找列表之间的缺失值
Finding missing values between lists in R
我有两组列表,需要将第一个列表中的每个向量与第二个列表中的相应向量进行比较,看看缺少什么(我只对第一个列表中的内容感兴趣' t 在第二个)。
示例数据:
> 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] 中但不在 y[2] 中的 5。相反,这是我的结果:
[[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
知道发生了什么事吗?或者有更好的方法吗?
这个怎么样?
lapply(seq_along(x), function(i) setdiff(x[[i]], y[[i]]))
我有两组列表,需要将第一个列表中的每个向量与第二个列表中的相应向量进行比较,看看缺少什么(我只对第一个列表中的内容感兴趣' t 在第二个)。
示例数据:
> 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] 中但不在 y[2] 中的 5。相反,这是我的结果:
[[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
知道发生了什么事吗?或者有更好的方法吗?
这个怎么样?
lapply(seq_along(x), function(i) setdiff(x[[i]], y[[i]]))