Recientemente supe que puedo usar identical
o all.equal
para verificar si 2 conjuntos de datos son idénticos.compruebe si 2 programas R son idénticos
¿Puedo usarlos también para verificar si 2 programas R son idénticos? ¿Hay una manera mejor o más adecuada que debajo?
program.1 <- readLines("c:/r stuff/test program 1.r")
program.2 <- readLines("c:/r stuff/test program 2.r")
identical(program.1, program.2)
all.equal(program.1, program.2)
isTRUE(all.equal(program.1, program.2))
Gracias por cualquier pensamiento o consejo.
Éstos son los contenidos de los programas de 2 pruebas que se comparan:
a <- matrix(2, nrow=3, ncol=4)
b <- c(1,2,3,4,5,6,7,8,6,5,4,3,2)
table(b)
c <- runif(2,0,1)
a * b
# de marzo de 2012 Edición comienza aquí #
Aquí está un pequeño programa de ejemplo para los que la función de Josh siguiente restituye FALSE
mientras identical
y all.equal
return TRUE
. Yo nombro los dos archivos de programa 'testa.r' y 'testb.r'.
set.seed(123)
y <- rep(NA, 10)
s <- matrix(ceiling(runif(10,0,100)), nrow=10, byrow=T)
a <- 25
ab <- 50
abc <- 75
for(i in 1:10) {
if(s[i] > a & s[i] <= ab) y[i] = 1
if(s[i] > ab & s[i] <= abc) y[i] = 2
}
s
y
Aquí es el programa de I utilizo para leer los dos archivos que contienen el código de seguridad.
program.1 <- readLines("c:/users/Mark W Miller/simple R programs/testa.r")
program.2 <- readLines("c:/users/Mark W Miller/simple R programs/testb.r")
identical(program.1, program.2)
all.equal(program.1, program.2)
isTRUE(all.equal(program.1, program.2))
parseToSame <- function(file1, file2) {
a <- parse(file = file1)
b <- parse(file = file2)
attributes(a) <- NULL
attributes(b) <- NULL
identical(a,b)
}
parseToSame(
"c:/users/Mark W Miller/simple R programs/testa.r",
"c:/users/Mark W Miller/simple R programs/testb.r"
)
¿Qué quiere decir con "idéntico"? Si quiere decir que el código fuente es literalmente el mismo, entonces simplemente puede usar 'diff'. –
Supongo que no sé cómo usar 'diff'. Cuando lo intento con el ejemplo anterior, aparece un mensaje de error. Por 'idéntico', me refiero a que los dos programas son exactamente iguales con diferentes nombres. –
¿Qué mensaje de error recibes? –