[Rd] Arith ops dropping S4 bit [Was: S4 object does not commute? (PR#13209)]
Simon Urbanek
simon.urbanek at r-project.org
Mon Oct 27 18:49:25 CET 2008
On Oct 27, 2008, at 12:25 , Robert.McGehee at geodecapital.com wrote:
> Hello all,
> It appears that for the simplest of S4 objects, z+1 does not equal
> 1+z.
> Presumably this is a bug, as 1+z seems to make a malformed object (at
> least malformed as an input to str).
FWIW the difference is that z+1 has the S4 bit set, 1+z does not. The
objects are otherwise identical. AFAICS the same behavior is
reproducible with any binary arithmetic operator (i.e. non-S4 %op% S4
will produce a result with S4 bit cleared yet valid S4 attributes).
Cheers,
S
>
>> setClass("test", representation("vector"))
> [1] "test"
>> z <- new("test", 1)
>> identical(z+1, 1+z)
> [1] FALSE
>> str(z+1)
> Formal class 'test' [package ".GlobalEnv"] with 1 slots
> ..@ .Data: num 2
>> str(1+z)
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test' Class 'test' Class 'test' Class 'test' Class 'test' Class
> 'test'
> Class 'test' Class 'test' Error: evaluation nested too deeply:
> infinite
> recursion / options(expressions=3D)?
>
>> R.version
> _ =20
> platform x86_64-unknown-linux-gnu =20
> arch x86_64 =20
> os linux-gnu =20
> system x86_64, linux-gnu =20
> status =20
> major 2 =20
> minor 8.0 =20
> year 2008 =20
> month 10 =20
> day 20 =20
> svn rev 46754 =20
> language R =20
> version.string R version 2.8.0 (2008-10-20)
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>
More information about the R-devel
mailing list