[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