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
Vous devez vous connecter pour publier un commentaire.
Au moins dans ce cas
Lobs[!(Lobs %in% Lexp)]
vous donne ce que vous voulez.
OriginalL'auteur Peter
OK, j'ai trouvé un peu obtus réponse, à l'aide de la plyr package:
Donc, il prend le nom de la matrice à partir de l'observé fonction, utilise double support de l'indexation et de l'identique() pour comparer les sous-listes, puis utilise le tableau binaire que les résultats de laply() pour les index dans l'original observé fonction.
Quelqu'un a une meilleure/nettoyant/sexy/moyen plus rapide?
.@Harlan - Est-il possible de connaître le pourcentage de différence entre les deux liste ayant la même structure? Je suis en train de comparer les attendus diffèrent de l'observé?
OriginalL'auteur Harlan