[R-pkg-devel] Error creating union class: object ‘.__C__compMatrix’ not found

Martin Maechler m@ech|er @end|ng |rom @t@t@m@th@ethz@ch
Sat Apr 18 18:36:36 CEST 2020


>>>>> 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  *RE*define 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 <wdunlap using 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 <wdunlap using 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 <maechler using 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 using r-project.org mailing list
    >>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
    > [[alternative HTML version deleted]]

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



More information about the R-package-devel mailing list