Re: [R] R is GNU S, not C.... [was "how to get or store ....."]

From: Liaw, Andy <andy_liaw_at_merck.com>
Date: Wed 07 Dec 2005 - 07:17:03 EST


From: vincent@7d4.com
>
> ronggui a écrit :
>
> > I think it is NOT just for historical reason.
> > see the following example:
> >
> >>rm(x)
> >>mean(x=1:10)
> > [1] 5.5
> >>x
> > Error: object "x" not found
>
> x is an argument local to mean(),
> did you expect another answer ?
>
> >>mean(x<-1:10)
> > [1] 5.5
> >>x
> > [1] 1 2 3 4 5 6 7 8 9 10
>
> What is the goal of this "example" ?

I believe it's to show why "<-" is to be preferred over "=" for assignment...  

> Here with "<-",
> (voluntary, or not, side effect)
> the global variable x is, also, created.
> Did the writer really want that ???

Very much so, I believe.  

> I though there were other specific statements
> especially intended for global assignment, eg "<<-".

You need to distinguish assignment in function _call_ and assignment in function _definition_. They ain't the same.  

> If this example was intended to prove "<-"
> is better than "="
> ... I'm not really convinced !

In that case, let's try another one (which is one big reason I stopped using "=" for assignment):

> long.comp <- function(n) {

+     Sys.sleep(n)
+     n
+ }

> result = long.comp(30)
> system.time(result = long.comp(30))
Error in system.time(result = long.comp(30)) :

        unused argument(s) (result ...)
> system.time(result <- long.comp(30))
[1] 0.00 0.00 30.05 NA NA
> str(result)

 num 30

Cheers,
Andy  

>



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed Dec 07 08:03:30 2005

This archive was generated by hypermail 2.1.8 : Wed 07 Dec 2005 - 09:37:29 EST