Comparer si deux objets dataframe dans R sont égaux?

Comment puis-je vérifier si deux objets, par exemple dataframes, ont une valeur égale en R?

Par valeur égale, je veux dire la valeur de chaque ligne, de chaque colonne d'un dataframe est égale à la valeur correspondante de ligne et de colonne dans la deuxième dataframe.

41
demandé sur smci 2012-05-15 02:59:53

3 réponses

ce n'est pas clair ce que signifie tester si deux cadres de données sont "valeur égale" mais pour tester si les valeurs sont les mêmes, voici un exemple de deux cadres de données non identiques avec des valeurs égales:

a <- data.frame(x = 1:10)
b <- data.frame(y = 1:10)

Pour tester si toutes les valeurs sont égales:

all(a == b) # TRUE

Pour tester si les objets sont identiques (ils ne le sont pas, ils ont des noms de colonne):

identical(a,b) # FALSE: class, colnames, rownames must all match.
48
répondu David LeBauer 2012-07-19 13:27:39

en outre, identique est encore utile et soutient l'objectif pratique:

identical(a[, "x"], b[, "y"]) # TRUE
12
répondu Brad Horn 2014-02-27 04:09:19

nous pouvons utiliser le paquet R compare pour tester si le nom de l'objet et les valeurs sont les mêmes, en une seule étape.

a <- data.frame(x = 1:10)
b <- data.frame(y = 1:10)

library(compare)
compare(a, b)
#FALSE [TRUE]#objects are not identical (different names), but values are the same.

Dans le cas où nous ne se soucient que de l'égalité de ces valeurs, nous pouvons définir ignoreNames=TRUE

compare(a, b, ignoreNames=T)
#TRUE
#  dropped names

le paquet a des fonctions intéressantes supplémentaires telles que compareEqual et compareIdentical.

4
répondu milan 2016-06-19 20:47:50