Hello, since Bioconductor devel branch 3.11 started, which is operating with R-devel 4.0.0 (for e.g. 2019-11-03 r77362 on OS X 10.11.6 El Capitan), my package CFAssay 1.21.0 is not built on none of all three Systems, Linux, Windos and Mac. The error message refers to xy.coords which is called by R function plot.default. I found out that it has to do with the S3 object system. In my package I defined an S3 method for R generic plot and three for print. To be free from the biological stuff I generated here a simple example package: https://github.com/ZytoHMGU/myfirstS3steps A simple method? 'print.my1stClass' is defined there, which writes the sumproduct of two numerical entries or numbers of a list, given a class attribut matching the name of the method. Up to R 3.6.1 it works as one is used to expect from S3 methods. After attaching the package in R 4.0.0, a call of 'print' for a list object of that class falls back to 'print.default' and writes the list entries. However, when the method is sourced, so that it appears in the global environment, it works as expected for S3 with a 'print'. Independently thereof, the method is shown in the list with .S3methods(print) or .S3methods(call="my1stClass"). A similar problem has function plot, I don't show it here. It leads to an error message, when plot.default and xy.coords cannot work with the object for which the method was written. I guess that methods for 'summary' and all other R base generics, written in a package as I did it and attached with the library command would have the same problem in R-devel 4.0. I did not try it. My questions are now: (1) Is action required or is it a bug in 4.0? (2) Should I be more stringent, for e.g. using special directives in the NAMESPACE file of the package? I did not. (3) Should I change to S4? For e.g. Bioconductor package CGHbase (Mark van de Wiel) contains S4 plot-methods for its objects. For whom it may be interesting the URL of my Bioconductor package: http://bioconductor.org/checkResults/devel/bioc-LATEST/CFAssay/ Herbert Braselmann <http://bioconductor.org/checkResults/devel/bioc-LATEST/aCGH/> -- Abteilung Strahlenzytogenetik / Research Unit Radiation Cytogenetics AG Integrative Biologie / Working group Integrative Biology Tel./Phone: +49 89 3187-2878 Helmholtz Zentrum Muenchen Deutsches Forschungszentrum fuer Gesundheit und Umwelt (GmbH) Ingolstaedter Landstr. 1 85764 Neuherberg www.helmholtz-muenchen.de Aufsichtsratsvorsitzende: MinDir'in Prof. Dr. Veronika von Messling Geschaeftsfuehrung: Prof. Dr. med. Dr. h.c. Matthias Tschoep, Kerstin Guenther Registergericht: Amtsgericht Muenchen HRB 6466 USt-IdNr: DE 129521671 [[alternative HTML version deleted]]
On 15/11/2019 8:42 a.m., Herbert Braselmann wrote:> Hello, > > since Bioconductor devel branch 3.11 started, which is operating with > R-devel 4.0.0 (for e.g. 2019-11-03 r77362 on OS X 10.11.6 El Capitan), > my package CFAssay 1.21.0 is not built on none of all three Systems, > Linux, Windos and Mac. The error message refers to xy.coords which is > called by R function plot.default. I found out that it has to do with > the S3 object system. In my package I defined an S3 method for R generic > plot and three for print. To be free from the biological stuff I > generated here a simple example package: > > https://github.com/ZytoHMGU/myfirstS3steps > > A simple method? 'print.my1stClass' is defined there, which writes the > sumproduct of two numerical entries or numbers of a list, given a class > attribut matching the name of the method. Up to R 3.6.1 it works as one > is used to expect from S3 methods. After attaching the package in R > 4.0.0, a call of 'print' for a list object of that class falls back to > 'print.default' and writes the list entries. However, when the method is > sourced, so that it appears in the global environment, it works as > expected for S3 with a 'print'. Independently thereof, the method is > shown in the list with .S3methods(print) or .S3methods(call="my1stClass").You aren't declaring your method as a method in the NAMESPACE file. I hadn't noticed a news item saying that the necessity for this had changed, but it is definitely something you should do. Put this into NAMESPACE: S3method(print, my1stclass) and it should be fine. Duncan Murdoch> > A similar problem has function plot, I don't show it here. It leads to > an error message, when plot.default and xy.coords cannot work with the > object for which the method was written. I guess that methods for > 'summary' and all other R base generics, written in a package as I did > it and attached with the library command would have the same problem in > R-devel 4.0. I did not try it. My questions are now: > > (1) Is action required or is it a bug in 4.0? > (2) Should I be more stringent, for e.g. using special directives in the > NAMESPACE file of the package? I did not. > (3) Should I change to S4? For e.g. Bioconductor package CGHbase (Mark > van de Wiel) contains S4 plot-methods for its objects. > > For whom it may be interesting the URL of my Bioconductor package: > http://bioconductor.org/checkResults/devel/bioc-LATEST/CFAssay/ > > Herbert Braselmann > <http://bioconductor.org/checkResults/devel/bioc-LATEST/aCGH/> >
Thank you Duncan, I declared now my S3methods in the NAMESPACE file. This works, at least locally on my machine. But I assume that my package version on the devel branch of Bioconductor will be built in the next hours. Herbert Am 16.11.19 um 16:29 schrieb Duncan Murdoch:> On 15/11/2019 8:42 a.m., Herbert Braselmann wrote: >> Hello, >> >> since Bioconductor devel branch 3.11 started, which is operating with >> R-devel 4.0.0 (for e.g. 2019-11-03 r77362 on OS X 10.11.6 El Capitan), >> my package CFAssay 1.21.0 is not built on none of all three Systems, >> Linux, Windos and Mac. The error message refers to xy.coords which is >> called by R function plot.default. I found out that it has to do with >> the S3 object system. In my package I defined an S3 method for R generic >> plot and three for print. To be free from the biological stuff I >> generated here a simple example package: >> >> https://github.com/ZytoHMGU/myfirstS3steps >> >> A simple method? 'print.my1stClass' is defined there, which writes the >> sumproduct of two numerical entries or numbers of a list, given a class >> attribut matching the name of the method. Up to R 3.6.1 it works as one >> is used to expect from S3 methods. After attaching the package in R >> 4.0.0, a call of 'print' for a list object of that class falls back to >> 'print.default' and writes the list entries. However, when the method is >> sourced, so that it appears in the global environment, it works as >> expected for S3 with a 'print'. Independently thereof, the method is >> shown in the list with .S3methods(print) or >> .S3methods(call="my1stClass"). > > You aren't declaring your method as a method in the NAMESPACE file.? I > hadn't noticed a news item saying that the necessity for this had > changed, but it is definitely something you should do. Put this into > NAMESPACE: > > S3method(print, my1stclass) > > and it should be fine. > > Duncan Murdoch > > >> >> A similar problem has function plot, I don't show it here. It leads to >> an error message, when plot.default and xy.coords cannot work with the >> object for which the method was written. I guess that methods for >> 'summary' and all other R base generics, written in a package as I did >> it and attached with the library command would have the same problem in >> R-devel 4.0. I did not try it. My questions are now: >> >> (1) Is action required or is it a bug in 4.0? >> (2) Should I be more stringent, for e.g. using special directives in the >> NAMESPACE file of the package? I did not. >> (3) Should I change to S4? For e.g. Bioconductor package CGHbase (Mark >> van de Wiel) contains S4 plot-methods for its objects. >> >> For whom it may be interesting the URL of my Bioconductor package: >> http://bioconductor.org/checkResults/devel/bioc-LATEST/CFAssay/ >> >> Herbert Braselmann >> <http://bioconductor.org/checkResults/devel/bioc-LATEST/aCGH/> >> >-- Abteilung Strahlenzytogenetik / Research Unit Radiation Cytogenetics AG Integrative Biologie / Working group Integrative Biology Tel./Phone: +49 89 3187-2878 Helmholtz Zentrum M?nchen
Reasonably Related Threads
- S3 methods in packages. Change in R 4.0.0?
- festival text for weather report
- Problem with WARNING...headers with CRLF line endings
- 'R CMD INSTALL' keeps going on despite serious errors, and returns exit code 0
- No output/no source tarball produced by 'R CMD build' on Windows (but ret code is 0)