¿Cómo puedo comprobar si dos objetos, por ejemplo, dataframes, son de igual valor en R?

Por valor igual, me refiero a que el valor de cada fila, de cada columna de una dataframe es igual al valor de la correspondiente fila y columna en la segunda dataframe.

  • ?all.equal o ?identical? Si no los dos, entonces usted tendrá que ampliar su pregunta, así que sabemos qué es exactamente lo que estamos tratando de comparar.
  • Echa un vistazo HERE
  • ¿qué se entiende por «valor de la igualdad»
  • He votado a cerrar porque es demasiado vago para responder en su estado actual.

3 Comentarios

  1. 54

    No está claro lo que significa para probar si dos marcos de datos «valor de la igualdad», pero para probar si los valores son los mismos, he aquí un ejemplo de dos personas que no son idénticos dataframes con valores iguales:

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

    Para probar si todos los valores son iguales:

    all(a == b) # TRUE

    Para probar si los objetos son idénticos (que no lo son, tienen diferentes nombres de columna):

    identical(a,b) # FALSE: class, colnames, rownames must all match.
    • En caso de que alguien está confundido, que no son idénticos, porque los nombres de columna no son los mismos.
    • gracias por decírmelo, me han aclarado mi respuesta.
    • Tenga en cuenta que para identical devolver true no sólo los valores y los nombres de columna deben coincidir, pero la fila de números/nombres demasiado. (Esto me golpeó cuando se utiliza subconjunto(); resultó all era lo que yo quería.)
    • es allí una manera de hacer idéntico caso omiso de la orden?
    • el fin de qué? el orden de los valores? Usted puede ordenar tanto los vectores como identical(sort(a), sort(b)).
  2. 14

    Además, idéntico sigue siendo útil y apoya el objetivo práctico:

    identical(a[, "x"], b[, "y"]) # TRUE
  3. 7

    Podemos utilizar el paquete de R compare para probar si los nombres de los objetos y los valores son los mismos, en un solo paso.

    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.

    En caso de que sólo se preocupan por la igualdad de los valores, podemos establecer ignoreNames=TRUE

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

    El paquete tiene otras funciones interesantes como compareEqual y compareIdentical.

Dejar respuesta

Please enter your comment!
Please enter your name here