如何获得两个R命名列表之间的区别?

Har*_*lan 13 indexing r 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")
Run Code Online (Sandbox Code Playgroud)

Lwant是我想要的结果.我试过这个:

> setdiff(Lobs, Lexp)
[[1]]
[1] "ni"
Run Code Online (Sandbox Code Playgroud)

不,这个名字丢失了,我不认为setdiff会注意名字.订单明显无关紧要,我不希望a = 1b = 1匹配.

不确定什么是好的方法......在一系列名称(Lobs)上循环的东西?听起来很笨拙,不像R一样,虽然可行......有什么优雅的想法吗?

Pet*_*ter 28

至少在这种情况下

Lobs[!(Lobs %in% Lexp)]

给你你想要的.