Re: [Rd] package methods different behaviour R1.9.1 patched and R2.0.0

From: John Chambers <jmc_at_research.bell-labs.com>
Date: Wed 08 Sep 2004 - 00:34:46 EST

It's not possible to tell what you're expecting or actually seeing from this mail. We need to see your code and the results, not your interpretation of how as() is implemented.

Meanwhile, here's how a simple class that extends "matrix" works in 2.0.0

With the code:

 setClass("mat1", representation(id="character"), contains = "matrix")

 mm <- matrix(1:12,3,4)

 mmm <- new("mat1", mm, id = "numeric")

The result is:

R> as(mmm, "vector")
 [1] 1 2 3 4 5 6 7 8 9 10 11 12

Class "vector" is one of the basic R classes; as explained in ?as, the methods for these use the exisiting as.<class> functions, as.vector in this case.

The result is indeed the same as coercing mmm to "matrix" first and then to vector

R> as(as(mmm, "matrix"), "vector")
 [1] 1 2 3 4 5 6 7 8 9 10 11 12

as one would expect, but the method for coercing class "mat1" does not go through "matrix":

R> selectMethod("coerce", c("mat1", "vector")) function (from, to, strict = TRUE)
{

    value <- as.vector(from)
    if (strict)

        attributes(value) <- NULL
    value
}
<environment: namespace:methods>

Wolski wrote:
>
> Hi!
>
> Concerning different behaviour between 1.9.1 patched and:
> R : Copyright 2004, The R Foundation for Statistical Computing
> Version 2.0.0 Under development (unstable) (2004-09-06), ISBN 3-900051-07-0
>
> Subtitle:
> as(x,"vector"); x is of class "Massvector"; never enters setAs("Massvector","vector"...
>
> The same code:
>
> as(mvl[[1]],"vector")
> causes under R1.9.1 to enter the function
> setAs("Massvector","vector"
> ,function(from)
> ...
>
> This never happens under R2.0.0.
>
> The class "Massvector" contains class "Matrix"
>
> A phenomenological description of what happens instead with R2.0.0 is
>
> as(as(mvl[[1]],"Matrix"),"vector")
>
> and its not what I would expect.
>
> Is this an intended behaviour in R2.0.0?
>
> /E
>
> ______________________________________________
> R-devel@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

-- 
John M. Chambers                  
Bell Labs, Lucent Technologies    office: (908)582-2681
700 Mountain Avenue, Room 2C-282  fax:    (908)582-3340
Murray Hill, NJ  07974

______________________________________________
R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Wed Sep 08 00:38:29 2004

This archive was generated by hypermail 2.1.8 : Fri 18 Mar 2005 - 09:00:05 EST