Comment vérifier si deux objets, par ex. trames de données, la valeur est-elle égale à R?
Par valeur égale, je veux dire que la valeur de chaque ligne de chaque colonne d'une trame de données est égale à la valeur de la ligne et de la colonne correspondantes dans la deuxième trame de données.
Il n'est pas clair ce que signifie tester si deux trames de données sont "à valeur égale" mais pour tester si les valeurs sont les mêmes, voici un exemple de deux trames 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 colonnes différents):
identical(a,b) # FALSE: class, colnames, rownames must all match.
De plus, identique est toujours utile et soutient l'objectif pratique:
identical(a[, "x"], b[, "y"]) # TRUE
Nous pouvons utiliser le package R compare
pour tester si les noms 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 nous soucions que de l'égalité des 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
.