[R] style question: returning multiple arguments - structure orlist

Peter Dalgaard BSA p.dalgaard at biostat.ku.dk
Sun Jul 29 13:45:23 CEST 2001

"Venables, Bill (CMIS, Cleveland)" <Bill.Venables at CMIS.CSIRO.AU> writes:

> I see Thomas has already nailed this one, so it becomes a non-issue.
> Nevertheless I feel moved to say I think the idea would have been a step in
> the wrong direction in the first place.  It comes from a desire to make R
> behave "a bit more like matlab" and that is ultimately unhelpful.
> Having tried to teach generations of students how to use the system (S-PLUS,
> but it could equally well have been R) I can say the most difficult people
> to teach it to are those you have to "convert" from a long history of
> expertise in another system.  Trying to make R behave like the previous
> system (SAS, Stata, SPSS, Matlab, APL, ....), as they are invariably
> determined to do, is ultimately futile, but you, the teacher, find yourself
> doing all sorts of hand-stands and cartwheels to meet these people half-way.
> It doesn't work.  Trust me.  In the end it *really* *doesn't* *work*.
> Seriously.
> I'm not sure how we can best help these people, either, but I'm working on
> it.  It comes as a dreadful shock for them to find that R is not just SAS,
> or Matlab, or APL, or... in some foreign notation but a genuinely different
> system.  They have real trouble expanding their mental outlook just enough
> to handle the fact that such a thing is even possible.
> In Adelaide where I taught with S-PLUS for about a decade I had no real
> problems in getting the students on board.  (Some, like David Smith, even
> went on to have distinguished careers in the game.)  But I got nowhere with
> my fellow staff members, some of whom just never got over Matlab, or SAS, or
> ... 

The counterpoint is that I often find it extremely instructive to try
and *make* R/S do some of the things it "can not do". This makes you
investigate some of the esoteric corners of the semantics, and
hopefully understand the whole thing a little bit better. It's not
invariably the case that you actually want to use the result of the
exercise, much less impose it on others.

I see the pedagogical problems we're facing largely as rooted in
"computational illiteracy". Basically, people have undeveloped
concepts of what computer languages are and what rules govern their

I had the good fortune of starting at a point in time where the first
year of statistics coincided with the first year of Maths and Computer
Science. Later, this got changed to include a much less ambitious CS
course (for some good reasons, including the fact that it is useful to
teach statistics to first-year statistics students....) 

I only recently realized that this has become a straight
Pascal programming class, which the brighter students manage with
their left hand, but they learn nothing about general algorithmic
topics, parser theory, and formal program verification techniques
(actually, we didn't learn much about parsers and compilers either,
but at least we knew that they were there).

At the lower levels, people nowadays don't even realize that computer
languages exist, and expect everything to work like the Windows
desktop and characterize everything else as "DOS-like". 

As for the original challenge, I think you can actually get by with
overloading "[<-", leading to syntax of the form

LIST[a,b,c] <- f()

(which you most certainly would not want to inflict on standard R!)

LIST would want to be an object of class "foo" and "[<-.foo" a
function that returns its first argument unchanged, and has its way
with the other arguments.

   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch

More information about the R-help mailing list