Skip to content

S4 vs S3. New Package

5 messages · Simon Zehnder, Rolf Turner, daniel schnaider +1 more

#
This depends very often of on the developer and what he is comfortable with. I like S4 classes, as I come from C++ and S4 classes approximate C++ classes at least more than S3 classes do (Reference Classes would do so even more and I know very good R programmers liking these most).

1) I wrote a package for MCMC simulation with S4 classes carrying all simulated values - fast enough for me: in less than 1.5 secs I have my sample of 100.000 values together with several other 100T values like log-likelihoods, posterior hyper parameters, etc. I watch out for not copying too often an object but sometimes it is not avoidable. 

2) That is not true: 
    
Books:
http://www.amazon.de/Software-Data-Analysis-Programming-Statistics/dp/0387759352/ref=sr_1_1?ie=UTF8&qid=1384014486&sr=8-1&keywords=John+chambers+data
http://www.amazon.de/Programming-Data-Language-John-Chambers/dp/0387985034/ref=sr_1_4?ie=UTF8&qid=1384014486&sr=8-4&keywords=John+chambers+data

Online:
https://www.rmetrics.org/files/Meielisalp2009/Presentations/Chalabi1.pdf
https://www.stat.auckland.ac.nz/S-Workshop/Gentleman/S4Objects.pdf

And for a bunch of packages look into the Bioconductor packages.

Best

Simon
On 09 Nov 2013, at 16:22, daniel schnaider <dschnaider at gmail.com> wrote:

            
#
For my take on the issue see fortune("strait jacket").

     cheers,

     Rolf Turner

P. S.  I said that quite some time ago and I have seen nothing
in the intervening years to change my views.

     R. T.
On 11/10/13 04:22, daniel schnaider wrote:
#
On 11/09/2013 11:59 AM, Rolf Turner wrote:
Mileage varies; the Bioconductor project attains a level of interoperability and 
re-use (http://www.nature.com/nbt/journal/v31/n10/full/nbt.2721.html) that would 
be difficult with a less formal class system.
Depending on implementation, updating S3 objects could as easily trigger copies; 
this is a fact of life in R. Mitigate by modelling objects in a vector 
(column)-oriented approach rather than the row-oriented paradigm of Java / C++ / 
etc.

Martin Morgan