On 29/04/2020 1:16 p.m., renozao wrote:
Thank you Martin,

Looks like the mMatrix class defined in Matrix is not exported in 3.6.3, maybe 
it is now exported in the current R-devel.

Matrix doesn't have the same versions as R: it's a recommended package, not a base package. It can be updated independently of R. The current version on CRAN is 1.2-18, but the R-forge version is 1.3-0. Neither one exports mMatrix.

Duncan Murdoch


In this case I'd rather use a conditional import and definition.
I'll try that route.

Bests,
Renaud

Sent with ProtonMail Secure Email.

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Saturday, April 18, 2020 12:36 PM, Martin Maechler 
<maech...@stat.math.ethz.ch> wrote:

renozao
on Wed, 8 Apr 2020 16:19:59 +0000 writes:

Thank you William for the reproducible example.

     > Currently I using the following (same as in William's example):

     > setClassUnion("mMatrix", c("Matrix", "matrix"))


Martin, are the changes made in the union class handling affecting the way we 
should declare them?

Thank you.

Bests,

     > Renaud


Thank you, Renaud, and Bill Dunlap.

There is obviously a bit of a problem there, but it may well be
"only" a problem in error handling.

As Bill's trace(get, ..) shows, R tries to get
"#HAS_DUPLICATE_CLASS_NAMES" which is indeed an indication of the problem:

You are trying to REdefine a class union that already exists
identically in the Matrix package:
In the R-forge development version of 'Matrix', it is
line 717 of Matrix/R/AllClass.R (and that will be close also
in the CRAN version of Matrix).

So at least for you, Renaud, the solution to the problem is easy:
Just don't do what you should not do: What you want is already
part of Matrix.... and after searching: It's been part of
Matrix since ca. July 2012 ...

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

But yes, there's a buglet in the 'methods' package currently,
which leads to a misleading error message
(It's arguable if it should give an error which it did not previously;
I think it would be quite a good idea to give at least a
warning as you are masking class definition of the Matrix
package which is in your search() path or at least among the
loaded namespaces at this time).

Best,
Martin

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐

     > On Wednesday, April 8, 2020 11:19 AM, William Dunlap <wdun...@tibco.com> 
wrote:


Use trace() to get a bit more detail - .__C_compMatrix is looked for in the 
wrong environment with inherits=FALSE.

     >>

     >>> setClassUnion("mMatrix", c("Matrix", "matrix"))

     >> Tracing get(name, envir = env) on entry

     >> x=".AllMTable", envir="<environment: 0x21dcf10>", topenv="<environment: 
namespace:methods>", inherits=TRUE

     >> Tracing get(name, envir = env) on entry

     >> x=".MTable", envir="<environment: 0x2238cf0>", topenv="<environment: 
namespace:methods>", inherits=TRUE

     >> Tracing get(name, envir = env) on entry

     >> x=".AllMTable", envir="<environment: 0x21dcf10>", topenv="<environment: 
namespace:methods>", inherits=TRUE

     >> Tracing get("#HAS_DUPLICATE_CLASS_NAMES", envir = .classTable) on entry

     >> x="#HAS_DUPLICATE_CLASS_NAMES", envir="<environment: 0x2787710>", 
topenv="<environment: base>", inherits=TRUE

     >> Tracing get(name, envir = env) on entry

     >> x=".AllMTable", envir="<environment: 0x21dcf10>", topenv="<environment: 
namespace:methods>", inherits=TRUE

     >> Tracing get(name, envir = env) on entry

     >> x=".MTable", envir="<environment: 0x2238cf0>", topenv="<environment: 
namespace:methods>", inherits=TRUE

     >> Tracing get(name, envir = env) on entry

     >> x=".MTable", envir="<environment: 0x21dcf10>", topenv="<environment: 
namespace:methods>", inherits=TRUE

     >> Tracing get(".SigLength", envir = env) on entry

     >> x=".SigLength", envir="<environment: 0x21dcf10>", topenv="<environment: 
namespace:methods>", inherits=TRUE

     >> Tracing get(".SigLength", envir = env) on entry

     >> x=".SigLength", envir="<environment: 0x21dcf10>", topenv="<environment: 
namespace:methods>", inherits=TRUE

     >> Tracing get(name, envir = env) on entry

     >> x=".MTable", envir="<environment: 0x2238cf0>", topenv="<environment: 
namespace:methods>", inherits=TRUE

     >> Tracing get(".SigLength", envir = env) on entry

     >> x=".SigLength", envir="<environment: 0x2238cf0>", topenv="<environment: 
namespace:methods>", inherits=TRUE

     >> Tracing get(".SigLength", envir = env) on entry

     >> x=".SigLength", envir="<environment: 0x2238cf0>", topenv="<environment: 
namespace:methods>", inherits=TRUE

     >> Tracing get(cname, envir = cwhere, inherits = FALSE) on entry

     >> x=".__C__compMatrix", envir="<environment: R_GlobalEnv>", topenv="<environment: 
R_GlobalEnv>", inherits=FALSE

     >> Error in get(cname, envir = cwhere, inherits = FALSE) :

     >> object '.__C__compMatrix' not found

     >> ...

     >>

     >> Bill Dunlap

     >> TIBCO Software

     >> wdunlap tibco.com

     >>

     >> On Wed, Apr 8, 2020 at 7:52 AM William Dunlap <wdun...@tibco.com> wrote:

     >>

     >>> % R-devel --vanilla --quiet

     >>>> library(Matrix)

     >>>> setClassUnion("mMatrix", c("Matrix", "matrix"))

     >>> Error in get(cname, envir = cwhere, inherits = FALSE) :

     >>> object '.__C__compMatrix' not found

     >>> Error in setClassUnion("mMatrix", c("Matrix", "matrix")) :

     >>> unable to create union class:  could not set members "Matrix"

     >>>> sessionInfo()

     >>> R Under development (unstable) (2020-04-07 r78175)

     >>> Platform: x86_64-pc-linux-gnu (64-bit)

     >>> Running under: Ubuntu 16.04.6 LTS

     >>>

     >>> Matrix products: default

     >>> BLAS/LAPACK: /usr/lib/libopenblasp-r0.2.18.so

     >>>

     >>> locale:

     >>> [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C

     >>> [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8

     >>> [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

     >>>

     >>> other attached packages:

     >>> [1] Matrix_1.2-18

     >>>

     >>> loaded via a namespace (and not attached):

     >>> [1] compiler_4.1.0  grid_4.1.0      lattice_0.20-41

     >>>

     >>> Bill Dunlap

     >>> TIBCO Software

     >>> wdunlap tibco.com

     >>>

     >>> On Wed, Apr 8, 2020 at 7:35 AM Martin Maechler 
<maech...@stat.math.ethz.ch> wrote:

     >>>

     >>>>>>>>> renozao

     >>>>>>>>> on Mon, 30 Mar 2020 21:20:43 +0000 writes:

     >>>>

     >>>> > Hi,

     >>>> > when R CMD check is run under R-devel (2020-03-29 r78108) I get the 
following error at installation:

     >>>>

     >>>> > Error in get(cname, envir = cwhere, inherits = FALSE) :

     >>>> > object ‘.__C__compMatrix’ not found

     >>>> > Error in setClassUnion("mMatrix", c("Matrix", "matrix")) :

     >>>> > unable to create union class:  could not set members "Matrix"

     >>>>

     >>>> > This does not happen on R 3.6.3.

     >>>>

     >>>> > I tried with Matrix listed in Depends but I still get the same 
error.

     >>>>

     >>>> > Is this linked to some changes in union classes or the Matrix 
package?

     >>>>

     >>>> > Thank you.

     >>>>

     >>>> > Bests,

     >>>> > Renaud

     >>>>

     >>>> Hi Renaud,

     >>>> One reason you got no response here, is because we don't even

     >>>> know about which package you are talking.

     >>>>

     >>>> So there's nothing, anybody can reproduce from your posting.

     >>>>

     >>>> There have been changes in R's dealing with class unions etc,

     >>>> notably even *relating* to an earlier bug report on class unions

     >>>> exactly for such a case which was *triggered* when people built

     >>>> on such Matrix classes.

     >>>>

     >>>> But we would really want to be able to reproduce what you are seeing..

     >>>>

     >>>> Best regards,

     >>>> Martin Maechler

     >>>>

     >>>> ETH Zurich, R Core Team *and* maintainer("Matrix")

     >>>>

     >>>> ______________________________________________

     >>>> R-package-devel@r-project.org mailing list

     >>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel

     > [[alternative HTML version deleted]]


______________________________________________

     > R-package-devel@r-project.org mailing list

     > https://stat.ethz.ch/mailman/listinfo/r-package-devel


______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel


______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to