OK. I stand corrected. Thanks. -- 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 11:36 PM, David Winsemius <dwinsem...@comcast.net> wrote: > 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.