I'd like to have two packages with S4 classes with the same name but different implementation. To that end I create a package tmpA with
setClass("A", representation=representation( x="numeric"), sealed=TRUE) setClass("B", representation=representation( x="numeric")) B <- function(...) new("B", ...) and a NAMESPACE having only import(methods) export(B) I duplicate this package source directory structure, renaming the duplicate package tmpB in its Description file. After R CMD INSTALL'ing both, I > library(tmpA) > library(tmpB) Error in setClass("A", representation = representation(x = "numeric"), : "A" has a sealed class definition and cannot be redefined Error : unable to load R code in package 'tmpB' Error: package/namespace load failed for 'tmpB' > setClass("A", prototype(y="numeric")) Error in setClass("A", c(y = "numeric")) : "A" has a sealed class definition and cannot be redefined It appears that, although 'where' in setClass influences the location of the class definition, there is a global class table that means only one class of a particular name can ever be defined. Is that the intended behavior? If I create a class B in the global environment > setClass("B", representation(y="numeric")) [1] "B" and then use the constructor from tmpA, I end up with an instance of the globally defined class B, rather than the one defined in the constructor's name space: > B() An object of class "B" Slot "y": numeric(0) How would I write B to return an instance of B as defined in tmpA? Thanks, Martin > sessionInfo() R version 2.7.0 Under development (unstable) (2008-02-09 r44397) x86_64-unknown-linux-gnu locale: LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=en_US.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=en_US.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_US.UTF-8;LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices datasets utils methods base other attached packages: [1] tmpA_1.0 -- Martin Morgan Computational Biology / Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109 Location: Arnold Building M2 B169 Phone: (206) 667-2793 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel