r - 如何获得两个 R 命名列表之间的差异?

标签 r indexing list set

好的,我有两个命名列表,一个是“预期的”,一个是“观察到的”。它们的结构可能很复杂,具有任意的数据类型。我想获得一个新列表,其中仅包含观察到的列表中与预期列表中的元素不同的那些元素。下面是一个例子:

Lexp <- list(a=1, b="two", c=list(3, "four"))
Lobs <- list(a=1, c=list(3, "four"), b="ni")
Lwant <- list(b="ni")

Lwant 是我想要的结果。我试过这个:
> setdiff(Lobs, Lexp)
[[1]]
[1] "ni"

不,这失去了名称,我认为 setdiff 不会注意名称。顺序在这里显然无关紧要,我不希望 a=1 与 b=1 匹配。

不知道什么是好的方法是......循环名称(Lobs)列表的东西?虽然可行,但听起来很笨拙且不像 R 语言……有任何优雅的想法吗?

最佳答案

至少在这种情况下
Lobs[!(Lobs %in% Lexp)]
给你你想要的。

关于r - 如何获得两个 R 命名列表之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1468856/

相关文章:

r - 按 ID 列折叠所有列

r - 对数据框列表中的列求和

r - 更改日期变量中的行值

r - 在数学或方程环境中将 R 矩阵转换为 LaTeX 矩阵

matlab - 将矩阵的一部分复制到另一个具有相同索引的空矩阵

java - Foreach in foreach 从列表中删除项目

python - 通过 Python 中的集合成员资格对整数进行分组

Oracle:如何跳过子键范围进行索引范围扫描?

java - 有时会使用唯一索引插入重复数据

python - 解包类似元组的文本文件