vectores vacio tablas studio programacion filtrar eliminar ejemplos datos data crear comandos r comparison equality built-in floating-point-comparison

vacio - tablas en r



¿Cuál es la diferencia en R entre idéntico(x, y) e isTRUE(all.equal(x, y))? (3)

Además de las diferencias en la tolerancia numérica y la comparación del modo de almacenamiento, a diferencia de all.equal() , identical también prueba la igualdad de los entornos asociados. Los objetos regulares en R normalmente no tienen entornos asociados, generalmente se asocian con objetos de function y formula (y terms ). Pero para ilustrar, le daré a dos objetos triviales diferentes entornos (recién creados):

x <- 2; environment(x) <- new.env() y <- 2; environment(y) <- new.env() all.equal(x,y) ## TRUE identical(x,y) ## FALSE

Hay un argumento ignore.environment :

ignore.environment: indica lógicamente si sus entornos deben ignorarse al comparar cierres.

pero como solo se aplica cuando se comparan cierres (es decir, funciones), no hace una diferencia en este caso, ni tampoco hará una diferencia cuando se comparan fórmulas u términos objetos.

¿Hay alguna diferencia entre probar isTRUE(all.equal(x, y)) e identical(x, y) ?

La página de ayuda dice:

No use ''all.equal'' directamente en ''si'' las expresiones, o use ''isTRUE (all.equal (....))'' o ''idéntico'' si es apropiado.

pero ese "si es apropiado" me deja en duda. ¿Cómo decido cuál de los dos es apropiado?


all.equal pruebas de all.equal para casi la igualdad, mientras que identical es más exacta (por ejemplo, no tiene tolerancia para las diferencias y compara el tipo de almacenamiento). De? Idéntico:

La función ''all.equal'' también se usa a veces para probar la igualdad de esta manera, pero fue diseñada para algo diferente: permite pequeñas diferencias en los resultados numéricos.

Y una razón por la que envolvería all.equal en isTRUE es porque all.equal informará las diferencias en lugar de simplemente devolver FALSE .


identical es más molesto. Por ejemplo:

> identical(as.double(8), as.integer(8)) [1] FALSE > all.equal(as.double(8), as.integer(8)) [1] TRUE > as.double(8) == as.integer(8) [1] TRUE