Dear R-users,

I have very recently started learning about object-oriented programming in R. I am far from being an expert in programming, although I do have an elementary C++ background.

Please take a look at these lines of code.
some.data = data.frame(V1 = 1:5, V2 = 6:10) ;
p.plot = ggplot(data=some.data,aes(x=V1, y=V2)) ;
class(p.plot) ;
[1] "ggplot"
My understanding is that the object p.plot belongs to the "ggplot" class. However, a new class definition like
setClass("AClass", representation(mFirst = "numeric", mSecond = "ggplot")) ;
yields the warning
Warning message:
In .completeClassSlots(ClassDef, where) :
undefined slot classes in definition of "AClass": mSecond(class "ggplot")
The ggplot object is also a list :
is.list(p.plot)
[1] TRUE
So, I guess I could identify mSecond as being a list.

However, I don't understand why "ggplot" is not considered a valid slot type. I thought setClass() was analogous to the class declaration in C++, but I guess I might be wrong. Would anyone care to provide additional explanations about this?

I decided to explore object-oriented programming in R so that I could organize the output from my analysis in a more rigorous fashion and then define custom methods that would yield relevant output. However, I'm starting to wonder if this aspect is not better suited for package builders. R lists are already very powerful and convenient templates. Although it wouldn't be as elegant, I could define functions that would take lists outputted by the different steps of my analysis and do what I want with them. I'm wondering what the merits of both approaches in the context of R would be. If anyone has any thoughts about this, I'd be most glad to read them.

Cheers,
--
*Luc Villandré*
/Biostatistician
McGill University Health Center -
Montreal Children's Hospital Research Institute/

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to