> On Apr 16, 2017, at 7:26 PM, Ramnik Bansal <ramnik.ban...@gmail.com> wrote:
> 
> In the code below
> 
> 
> *ff <- function(n){ for(i in 1:n) (i+1)}*
> 
> *n<-3;ff(n)->op;print(op)*
> 
> Why doesnt *print(op) * print 4 and instead prints NULL.
> Isnt the last line of code executed is *i+1 * and therefore that should be
> returned instead of NULL
> 
> instead if I say
> *ff <- function(n){ (n+1) }*
> 
> Then
> *n<-3;ff(n)->op;rm(n);print(op)*
> gives 4 as output.
> 
> My question is *Which *is considered as the last line in a functoin for the
> purpsoe of default return ? And under what conditions ?

It's probably a good thing that you are confused. It suggests that you are 
actually "getting" the R-paradigm. Unfortunately for the new user of R, there 
are several levels of understanding to pass through. First, you realize that 
function-results need to be assigned to names in order to persist. Then there 
is the next level where you discover that there are exceptions to that rule: 
this levels is the level where you realize that the `for` function is different 
from most other R functions.  It is really a side-effect-fucntion. The 
assignments made within its body actually persist in the global environment. 
AND it returns NULL. It shares this anomalous behavior with `while` and 
`repeat`.n Almost all functions are invoked with a possibly empty argument 
list.  The next and break functions have implicit paired (empty) parentheses. 

(My personal opinion is that this is not adequately advertised. Perhaps it is 
an attempt to get people to migrate away from "Fortran-coding" behavior?)

-- 
David.


> 
> -Thanks,
> Ramnik
> 
>       [[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.

David Winsemius
Alameda, CA, USA

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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