[R] attr.all.equal() and all.equal(attributes(), attributes())

Peter Dalgaard p.dalgaard at biostat.ku.dk
Sun Nov 9 14:24:13 CET 2008


Heinz Tuechler wrote:
> Dear All!
> 
> If I try to compare the attributes of two objects, I find a surprising 
> behaviour of attr.all.equal(). With identical attributes I receive the 
> answert NULL. If the attributes differ, the answer is as expecxted and 
> differences are shown.
> all.equal(attributes(), attributes()) instead returns TRUE, if 
> attributes are equal.
> 

That _is_ as documented,  although if you want to quibble, it should 
probably also have been mentioned in the Value section.

I don't know if there's a a rationale for it. The actual code goes

msg <- NULL
if (....) msg <- c(msg, some text)
if (.....
msg

so it returns NULL if none of the ifs are taken, but it could easily be 
changed to return

if (is.null(msg)) TRUE else msg

("easily" depending, of course, on how much code actually depends on the 
current behaviour...)

> See example:
> 
> v <- 1:5
> attr(v, 'testattribute') <- 'testattribute v'
> v_c <- v
> attributes(v)
> $testattribute
> [1] "testattribute v"
> 
> attributes(v_c)
> $testattribute
> [1] "testattribute v"
> 
> all.equal(v, v_c)
> [1] TRUE
> attr.all.equal(v, v_c)
> NULL  << - - - - - - - - - - here is, what I don't expected
> all.equal(attributes(v), attributes(v_c))
> [1] TRUE
> 
> attr(v_c, 'testattribute') <- 'testattribute v_c'
> attr.all.equal(v, v_c)
> [1] "Attributes: < Component 1: 1 string mismatch >"
> all.equal(attributes(v), attributes(v_c))
> [1] "Component 1: 1 string mismatch"
> 
> Thanks for your attention
> 
> Heinz Tüchler
> 
> Version:
>  platform = i386-pc-mingw32
>  arch = i386
>  os = mingw32
>  system = i386, mingw32
>  status = Patched
>  major = 2
>  minor = 8.0
>  year = 2008
>  month = 11
>  day = 04
>  svn rev = 46830
>  language = R
>  version.string = R version 2.8.0 Patched (2008-11-04 r46830)
> 
> Windows XP (build 2600) Service Pack 2
> 
> Locale:
> LC_COLLATE=German_Austria.1252;LC_CTYPE=German_Austria.1252;LC_MONETARY=German_Austria.1252;LC_NUMERIC=C;LC_TIME=German_Austria.1252 
> 
> 
> Search Path:
>  .GlobalEnv, package:stats, package:graphics, package:grDevices, 
> package:utils, package:datasets, package:methods, Autoloads, package:base
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide 
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.


-- 
    O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
   c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
  (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)              FAX: (+45) 35327907



More information about the R-help mailing list