comment puis-je obtenir la différence entre les deux " R " nommé listes?

OK, j'ai deux listes, l'une est "prévu" et que l'un est "observé". Ils peuvent être complexes dans la structure, avec l'arbitraire des types de données. Je veux obtenir une nouvelle liste contenant les éléments de la liste qui sont différents de ce qui est dans la liste. Voici un exemple:

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 est ce que je veux que le résultat soit. J'ai essayé ceci:

> setdiff(Lobs, Lexp)
[[1]]
[1] "ni"

Nope, qui perd le nom, et je ne pense pas que setdiff accorde de l'attention aux noms. Ordre manifestement n'a pas d'importance ici, et je ne veux pas a=1 pour correspondre avec b=1.

Pas sûr de ce qu'est une bonne approche, c'est... quelque Chose qui passe en boucle sur une liste de noms(Lob)? Sons maladroit et non-R, bien que réalisable... mais j'Ai tout élégant idées?

OriginalL'auteur Harlan | 2009-09-23