Comment comparer deux matrices pour voir si elles sont identiques dans R?
Par exemple, j'ai deux matrices et je veux savoir si elles sont identiques dans chaque élément.
mymatrix<-Matrix(rnorm(20),ncol=5)
mysvd<-svd(mymatrix)
newmatrix<-mysvd$u %*% diag(mysvd$d) %*% t(mysvd$v)
J'ai utilisé les méthodes suivantes pour comparer:
identical(Matrix(newmatrix), mymatrix)
all.equal(Matrix(newmatrix), mymatrix)
Pourquoi le premier ne retourne pas VRAI?
Peu importe, je utiliser la Matrice de la matrice de paquet ou de la matrice à partir de la base de package
OriginalL'auteur Tyler 十三将士归玉门 | 2014-04-12
Vous devez vous connecter pour publier un commentaire.
Ils ne sont pas exactement égales (par
identical
) parce que de très petites différences:mais ces différences sont inférieures à la valeur par défaut
tolerance
à l'intérieur deall.equal
:donc
identical
sera de retourFALSE
etall.equal
sera de retourTRUE
.OriginalL'auteur flodel
Essayez ce qui suit:
Clairement ce ne sont pas les mêmes structures de données.
OriginalL'auteur G. Grothendieck
Le premier vous de comparer:
avec:
Et si vous lisez l'aide pour
identical
vous voir:The safe and reliable way to test two objects for being _exactly_ equal.
Vous comparez unMatrix
-objet de classe avec une R de la matrice de l'objet. Ils sont très différents. Même deux objets avec des attributs différents ne seront pas identiques:OriginalL'auteur Spacedman
Vous pouvez vérifier si de 2 matrices sont identiques (à l'identique) ou non comme suit.
Supposons que vous disposez de 2 matrices,
newMatrix
etoldMatrix
, qui pourrait être n'importe quelle dimension.which (which (newMatrix == oldMatrix) == FALSE)
sera de retourinteger (0)
si les deux matrices sont identiques.OriginalL'auteur Saket Shrivastava