From murdoch@dunc@n @end|ng |rom gm@||@com  Fri Apr  5 16:00:28 2019
From: murdoch@dunc@n @end|ng |rom gm@||@com (Duncan Murdoch)
Date: Fri, 5 Apr 2019 10:00:28 -0400
Subject: [Rd] all.equal failure
In-Reply-To: <b23057$belnhe@ironport10.mayo.edu>
References: <b23057$belnhe@ironport10.mayo.edu>
Message-ID: <7b627c90-1bbf-b2a5-5ddc-391711f5208e@gmail.com>

On 05/04/2019 9:03 a.m., Therneau, Terry M., Ph.D. via R-devel wrote:
> This arose in testing [.terms and has me confused.
> 
> data(esoph)?? # use a standard data set
> 
> t0x <- terms(model.frame( ~ tobgp, data=esoph))
> t1 <-? terms(model.frame(ncases ~ agegp + tobgp, data=esoph))
> t1x <- (delete.response(t1))[-1]
> 
>   > all.equal(t0x, t1x)
> [1] TRUE
> 
> # the above is wrong, because they actually are not the same
> 
>   > all.equal(attr(t0x, 'dataClasses'), attr(t1x, 'dataClasses'))
> [1] "Names: 1 string mismatch"
> [2] "Lengths (1, 2) differ (string compare on first 1)"

As documented, all.equal() is generic, with methods for different 
classes.  The classes of both t0x and t1x are

  c("terms","formula")

with no all.equal.terms method, so all.equal.formula is called.  That 
method isn't specifically documented, but you can see its definition as

function (target, current, ...)
{
     if (length(target) != length(current))
         return(paste0("target, current differ in having response: ",
             length(target) == 3L, ", ", length(current) == 3L))
     if (!identical(deparse(target), deparse(current)))
         "formulas differ in contents"
     else TRUE
}

So the issue is that deparse(t0x) and deparse(t1x) give the same strings 
with no attributes shown, even though "showAttributes" is set by 
default.   I haven't traced through the C code to see where things are 
going wrong.

Duncan Murdoch

> 
>   > sessionInfo()
> R Under development (unstable) (2019-04-05 r76323)
> Platform: x86_64-pc-linux-gnu (64-bit)
> Running under: Ubuntu 18.04.2 LTS
> 
> Matrix products: default
> BLAS:?? /usr/local/src/R-devel/lib/libRblas.so
> LAPACK: /usr/local/src/R-devel/lib/libRlapack.so
> 
> locale:
>   ?[1] LC_CTYPE=en_US.UTF-8?????? LC_NUMERIC=C
>   ?[3] LC_TIME=en_US.UTF-8??????? LC_COLLATE=C
>   ?[5] LC_MONETARY=en_US.UTF-8??? LC_MESSAGES=en_US.UTF-8
>   ?[7] LC_PAPER=en_US.UTF-8?????? LC_NAME=C
>   ?[9] LC_ADDRESS=C?????????????? LC_TELEPHONE=C
> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
> 
> attached base packages:
> [1] stats???? graphics? grDevices utils???? datasets? methods base
> 
> loaded via a namespace (and not attached):
> [1] compiler_3.7.0 tools_3.7.0
> 
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



[Rd] all.equal failure
Duncan Murdoch