Both 'for' and 'next' return TRUE from is.function is.function('for') is.function('next')
Not at an R console at the moment but I did check this earlier today. Thinking of it as different is definitely the way to think about it. (ISTR Bert and I have had this exchange in the past.) -- Best David Sent from my iPhone > On Apr 16, 2017, at 9:50 PM, Bert Gunter <bgunter.4...@gmail.com> wrote: > > David et. al.: > > "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. " > > for(), while(), if(), next, etc. are *not* functions. > > ?for says: "These are the basic control-flow constructs of the R language." > > They do not "return" values. They control program flow, whence what > you call "side effects" are actually expressions that are parsed and > evaluated > > viz. > >> if(TRUE)10 > [1] 10 > > ## but > >> if(FALSE) 5 > ## nothing is returned, not even NULL >> for(i in 1:3) i > ## Ditto > >> z <- NULL >> z <- for(i in 1:3)i >> z > NULL ## still > > Cheers, > Bert > > > > > Cheers, > Bert > > > > > Bert Gunter > > "The trouble with having an open mind is that people keep coming along > and sticking things into it." > -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) > > >> On Sun, Apr 16, 2017 at 8:12 PM, David Winsemius <dwinsem...@comcast.net> >> wrote: >> >>> 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. ______________________________________________ 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.