[R] R as a non-functional language

Bill.Venables at csiro.au Bill.Venables at csiro.au
Mon Mar 21 23:25:19 CET 2011


That's not the point.  The point is that R has functions which have side-effects and hence does not meet the strict requirements for a functional language. 

-----Original Message-----
From: ONKELINX, Thierry [mailto:Thierry.ONKELINX at inbo.be] 
Sent: Monday, 21 March 2011 7:20 PM
To: Russ.Abbott at gmail.com; Venables, Bill (CMIS, Dutton Park)
Cc: r-help at r-project.org
Subject: RE: [R] R as a non-functional language

Dear Russ,

Why not use simply

pH <- c(area1 = 4.5, area2 = 7, mud = 7.3, dam = 8.2, middle = 6.3)

That notation is IMHO the most readable for students.

Best regards,

Thierry

----------------------------------------------------------------------------
ir. Thierry Onkelinx
Instituut voor natuur- en bosonderzoek
team Biometrie & Kwaliteitszorg
Gaverstraat 4
9500 Geraardsbergen
Belgium

Research Institute for Nature and Forest
team Biometrics & Quality Assurance
Gaverstraat 4
9500 Geraardsbergen
Belgium

tel. + 32 54/436 185
Thierry.Onkelinx at inbo.be
www.inbo.be

To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of.
~ Sir Ronald Aylmer Fisher

The plural of anecdote is not data.
~ Roger Brinner

The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data.
~ John Tukey
  

> -----Oorspronkelijk bericht-----
> Van: r-help-bounces at r-project.org 
> [mailto:r-help-bounces at r-project.org] Namens Russ Abbott
> Verzonden: zondag 20 maart 2011 6:46
> Aan: Bill.Venables at csiro.au
> CC: r-help at r-project.org
> Onderwerp: Re: [R] R as a non-functional language
> 
> I'm afraid I disagree.  As a number of people have shown, 
> it's certainly possible to get the end result
> 
> > pH <- c(4.5,7,7.3,8.2,6.3)
> > names(pH) <- c('area1','area2','mud','dam','middle')
> > pH
>  area1  area2    mud    dam middle
>    4.5    7.0    7.3    8.2    6.3
> 
> using a single expression. But what makes this non-functional 
> is that the
> names() function operates on a reference to the pH 
> object/entity/element. In other words, the names() function 
> has a side effect, which is not permitted in strictly 
> functional programming.
> 
> I don't know if R has threads. But imagine it did and that one ran
> 
> > names(pH) <- c('area1','area2','mud','dam','middle')
> 
> and
> 
>  > names(pH) <- c('areaA','areaB','dirt','blockage','center')
> 
> in simultaneous threads. Since they are both operating on the 
> same pH element, it is uncertain what the result would be. 
> That's one of the things that functional programming prevents.
> 
> *-- Russ *
> 
> 
> 
> On Sat, Mar 19, 2011 at 10:22 PM, <Bill.Venables at csiro.au> wrote:
> 
> > PS the form
> >
> > names(p) <- c(...)
> >
> > is still functional, of course.  It is just a bit of 
> syntactic sugar 
> > for the clumsier
> >
> > p <- `names<-`(p, c(...))
> >
> > e.g.
> > > pH <- `names<-`(pH, letters[1:5])
> > > pH
> >  a   b   c   d   e
> > 4.5 7.0 7.3 8.2 6.3
> > >
> >
> >
> >
> > -----Original Message-----
> > From: Venables, Bill (CMIS, Dutton Park)
> > Sent: Sunday, 20 March 2011 3:09 PM
> > To: 'Gabor Grothendieck'; 'Russ.Abbott at gmail.com'
> > Cc: 'r-help at r-project.org'
> > Subject: RE: [R] R as a non-functional language
> >
> > The idiom I prefer is
> >
> > pH <- structure(c(4.5,7,7.3,8.2,6.3),
> >                names = c('area1','area2','mud','dam','middle'))
> >
> > -----Original Message-----
> > From: r-help-bounces at r-project.org 
> > [mailto:r-help-bounces at r-project.org]
> > On Behalf Of Gabor Grothendieck
> > Sent: Sunday, 20 March 2011 2:33 PM
> > To: Russ.Abbott at gmail.com
> > Cc: r-help at r-project.org
> > Subject: Re: [R] R as a non-functional language
> >
> > On Sun, Mar 20, 2011 at 12:20 AM, Russ Abbott 
> <russ.abbott at gmail.com>
> > wrote:
> > > I'm reading Torgo (2010) *Data Mining with 
> > > R*<http://www.liaad.up.pt/~ltorgo/DataMiningWithR/code.html>in
> > > preparation for a class I'll be teaching next quarter.  Here's an 
> > > example that is very non-functional.
> > >
> > >> pH <- c(4.5,7,7.3,8.2,6.3)
> > >> names(pH) <- c('area1','area2','mud','dam','middle')
> > >> pH
> > >  area1  area2    mud    dam middle
> > >   4.5    7.0    7.3    8.2    6.3
> > >
> > >
> > > This sort of thing seems to be quite common in R.
> >
> > Try this:
> >
> > pH <- setNames(c(4.5,7,7.3,8.2,6.3),
> > c('area1','area2','mud','dam','middle'))
> >
> >
> >
> >
> > --
> > Statistics & Software Consulting
> > GKX Group, GKX Associates Inc.
> > tel: 1-877-GKX-GROUP
> > email: ggrothendieck at gmail.com
> >
> > ______________________________________________
> > R-help at 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.
> >
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at 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.
> 


More information about the R-help mailing list