Недавно я узнал, что могу использовать identical
или all.equal
, чтобы проверить, идентичны ли 2 набора данных.
Могу ли я также использовать их для проверки идентичности программ 2 R? Есть ли лучший или более подходящий способ, чем приведенный ниже?
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))
Спасибо за любые мысли или советы.
Вот содержимое 2 сравниваемых тестовых программ:
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
#
Март 2012 Править начинается здесь
#
Вот небольшой пример программы, для которой приведенная ниже функция Джоша возвращает FALSE
, тогда как identical
и all.equal
возвращают TRUE
. Я называю два программных файла «testa.r» и «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
Вот программа R, которую я использую для чтения двух файлов, содержащих приведенный выше код.
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"
)