[Rd] problems with initialize-method, difference between Win XP & Linux

From: Matthias Kohl <Matthias.Kohl_at_stamats.de>
Date: Tue 06 Dec 2005 - 12:36:29 GMT


Dear R devels,

I have some questions concerning the use of "initialize".

Situation:
There are two packages "S4pkg1" and "S4pkg2" which include S4 classes and methods where the first one contains a new S4 class "S4pkg1Class". Then, in "S4pkg2" there is a new S4 class "S4pkg2Class" which has a slot of class "S4pkg1Class". Both packages have a namespace where I use exportClasses("S4pkg1Class") in the namespace of "S4pkg1" and import("S4pkg1") in the namespace of "S4pkg2".

#############
1. Solution:
I provide a prototype argument in the definition of "S4pkg1Class" and use new("S4pkg1Class") in the prototype of "S4pkg2Class". Then, everything works fine under Windows XP and (Suse 9.3) Linux using R 2.2.0 and R 2.3.0 devel; i.e., calling "new("S4pkg2Class")" returns an object of class "S4pkg2Class" and the slot of class "S4pkg1Class" is filled with the corresponding prototype.

#############
2. Solution:
I don't provide a prototype argument in the definition of "S4pkg1Class". Instead, I define an "initialize"-method for class "S4pkg1Class" with default arguments for the slots of "S4pkg1Class" and again I use
"new("S4pkg1Class")" in the prototype of class "S4pkg2Class".
Moreover, I use exportMethods("initialize") in the namespace of package
"S4pkg1".

Then, everything seems to work fine (at least on my PC) under Windows XP using R 2.2.0 and R 2.3.0 devel; i.e., calling "new("S4pkg2Class")" returns an object of class "S4pkg2Class" where the slot of class
"S4pkg1Class" now is filled with the default object generated by the
initialize-method of class "S4pkg1Class". However, under (Suse 9.3) Linux using R 2.2.0 and R 2.3.0 devel
"new("S4pkg2Class")" returns an object of class "S4pkg2Class" where the
slot of class "S4pkg1Class" is not filled with the default object generated by the initialize-method of class "S4pkg1Class" but with a
"default-protoype" (slots are filled with "numeric(0)", "character(0)",
...).

Can someone confirm this behavior?

The sources of two sample packages can be found under: http://www.stamats.de/S4pkg1_0.1-1.tar.gz and
http://www.stamats.de/S4pkg2_0.1-1.tar.gz

After installation please try:
require(S4pkg1)
new("S4pkg1Class") # o.k., default values of initialize are used

require(S4pkg2)
new("S4pkg2Class") # is slot "pkg1" filled with the output of new("S4pkg1Class") given above???

Why does this work under Windows XP but not under (Suse 9.3) Linux? Am I doing something wrong - or is this a bug?

Many thanks for any help!
Matthias

-- 
StaMatS - Statistik + Mathematik Service
Dipl.Math.(Univ.) Matthias Kohl
www.stamats.de

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Tue Dec 06 23:42:58 2005

This archive was generated by hypermail 2.1.8 : Tue 06 Dec 2005 - 16:22:58 GMT