[Rd] Change to I() in R 4.1
Pages, Herve
hp@ge@ @end|ng |rom |redhutch@org
Sat Oct 24 01:23:59 CEST 2020
Hi there,
Is that change in R-devel intentional?
library(Matrix)
m <- as(matrix(c(0, 1)), "sparseMatrix")
isS4(m)
# [1] TRUE
x <- I(m)
# Warning message:
# In `class<-`(x, unique.default(c("AsIs", oldClass(x)))) :
# Setting class(x) to multiple strings ("AsIs", "dgCMatrix", ...);
result will no longer be an S4 object
isS4(x)
# [1] FALSE
This works fine in R 4.0.3 i.e. no warning and I() doesn't turn off the
S4 bit of the object.
This change breaks 17 Bioconductor packages.
Seems that the culprit is this change in how I() is implemented:
In R 4.0.3:
> I
function (x)
{
structure(x, class = unique(c("AsIs", oldClass(x))))
}
In R devel:
> I
function (x)
`class<-`(x, unique.default(c("AsIs", oldClass(x))))
Unfortunately there is a bunch of code around that calls I() on S4
objects, admittedly not necessarily for very good reasons, but it
happens. Would it be possible that I() has a less destructive effect on
S4 objects?
Thanks,
H.
> sessionInfo()
R Under development (unstable) (2020-10-17 r79346)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 20.04.1 LTS
Matrix products: default
BLAS: /home/biocbuild/bbs-3.13-bioc/R/lib/libRblas.so
LAPACK: /home/biocbuild/bbs-3.13-bioc/R/lib/libRlapack.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
--
Hervé Pagès
Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M1-B514
P.O. Box 19024
Seattle, WA 98109-1024
E-mail: hpages using fredhutch.org
Phone: (206) 667-5791
Fax: (206) 667-1319
More information about the R-devel
mailing list