Building a package: R CMD check problems
1
0
Entering edit mode
@raffaele-calogero-294
Last seen 8.4 years ago
Italy/Turin/University of Torino
Since we have started to use Applied Biosystem ABI 1700 arrays we have build a set of functions to handle these array data and we want now to build a package. The ABI 1700 data are stored in a S4 class called applera. We created a zzz.R file with: .First.lib <- function(libname, pkgname, where){ if(!require(methods)) stop("We require methods for package Applera") where <- match(paste("package:", pkgname, sep=""), search()) .initApplera(where) } And we embedded the class and methods in the following way: .initApplera <- function(where){ require("Biobase") || stop("cannot load applera without Biobase") require("affy") || stop("cannot load applera without affy") setClass("applera", representation(Organism="character", Geneid="character", Signal="exprSet", Sdev="exprSet", Cv="exprSet", Sn="exprSet", Flags="exprSet", Ctrl="list"), contains="exprSet", where=where) #Organism slot if(is.null(getGeneric("organism"))) setGeneric("organism", function(object) standardGeneric("organism")) setMethod("organism", signature(object="applera"), function(object) {object at Organism}) #Primary geneId slot if(is.null(getGeneric("geneid")))setGeneric("geneid", function(object) standardGeneric("geneid")) setMethod("geneid", signature(object="applera"), function(object) { primaryId <- as.vector(object at Geneid) names(primaryId) <- geneNames(object at Signal) return(primaryId) }) ... } The problem comes during the R CMD check applera. Everything work fine until I run examples for the class object and for methods having a name already defined in other packages (e.g. organism is already defined in "chromLocation") as instead I get the error Error: cannot find the function "geneid" Esecution halted if I run an example using the method "geneid" that was not previously defined. I do not understand where is the error since the "organism" method and the "geneid" method have been defined in the same way. Any suggestion? Raffaele -- ---------------------------------------- Prof. Raffaele A. Calogero Bioinformatics and Genomics Unit Dipartimento di Scienze Cliniche e Biologiche c/o Az. Ospedaliera S. Luigi Regione Gonzole 10, Orbassano 10043 Torino tel. ++39 0116705420 Lab. ++39 0116705408 Fax ++39 0119038639 Mobile ++39 3333827080 email: raffaele.calogero at unito.it www: www.bioinformatica.unito.it
applera applera • 1.1k views
ADD COMMENT
0
Entering edit mode
@kasper-daniel-hansen-2979
Last seen 10 months ago
United States
1) Drop all the stuff with .First.lib and so on. You just put the required libraries in the DESCRIPTION file, like Depends: methods, Biobase 2) You just put your class definitions in standard file in the /R directory. If you have a problem with methods having the same name as other packages, you can do one of the following a) not loading the conflicting package (not a good solution) b) rename your methods c) resolve them: let us say that package XY has a method getSomething with argument "object" - the defintion will look something like SetGeneric("getSomething", function(object) ....) then your method can only have the "object"a rgument which may or may not be possible. d) use namespaces, see the article in R-news some time ago by Luke Tierny, that has a good explanation. Kasper On Aug 30, 2005, at 7:29 AM, Raffaele Calogero wrote: > Since we have started to use Applied Biosystem ABI 1700 arrays we have > build a set of functions to handle these array data and we want now to > build a package. > The ABI 1700 data are stored in a S4 class called applera. > We created a zzz.R file with: > .First.lib <- function(libname, pkgname, where){ > if(!require(methods)) stop("We require methods for package > Applera") > where <- match(paste("package:", pkgname, sep=""), search()) > .initApplera(where) > } > > And we embedded the class and methods in the following way: > .initApplera <- function(where){ > require("Biobase") || stop("cannot load applera without Biobase") > require("affy") || stop("cannot load applera without affy") > setClass("applera", representation(Organism="character", > Geneid="character", Signal="exprSet", Sdev="exprSet", Cv="exprSet", > Sn="exprSet", Flags="exprSet", Ctrl="list"), contains="exprSet", > where=where) > #Organism slot > if(is.null(getGeneric("organism"))) setGeneric("organism", > function(object) standardGeneric("organism")) > setMethod("organism", signature(object="applera"), function(object) > {object at Organism}) > #Primary geneId slot > if(is.null(getGeneric("geneid")))setGeneric("geneid", function(object) > standardGeneric("geneid")) > setMethod("geneid", signature(object="applera"), function(object) { > primaryId <- as.vector(object at Geneid) > names(primaryId) <- geneNames(object at Signal) > return(primaryId) }) > ... > } > > The problem comes during the R CMD check applera. > Everything work fine until I run examples for the class object and > for > methods having a name already defined in other packages (e.g. organism > is already defined in "chromLocation") as instead I get the error > Error: cannot find the function "geneid" > Esecution halted > if I run an example using the method "geneid" that was not previously > defined. > I do not understand where is the error since the "organism" method and > the "geneid" method have been defined in the same way. > Any suggestion? > > Raffaele > > -- > > ---------------------------------------- > Prof. Raffaele A. Calogero > Bioinformatics and Genomics Unit > Dipartimento di Scienze Cliniche e Biologiche > c/o Az. Ospedaliera S. Luigi > Regione Gonzole 10, Orbassano > 10043 Torino > tel. ++39 0116705420 > Lab. ++39 0116705408 > Fax ++39 0119038639 > Mobile ++39 3333827080 > email: raffaele.calogero at unito.it > www: www.bioinformatica.unito.it > > _______________________________________________ > Bioconductor mailing list > Bioconductor at stat.math.ethz.ch > https://stat.ethz.ch/mailman/listinfo/bioconductor >
ADD COMMENT

Login before adding your answer.

Traffic: 1064 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6