[R] Return value from function with For loop

Bert Gunter bgunter.4567 at gmail.com
Mon Apr 17 16:25:48 CEST 2017


(Apparently I hit "send" too early)

1. I have cc'ed this to the list, as others may well have some good
suggestions re: books.

2. The posting guide is your best resource as to what is appropriate
for the list. I defer to others re: conventions, as I have have been
accused of violating them from time to time.

3. R resources abound. RStudio has some recommendations for web
resource on their site worth checking out:

https://www.rstudio.com/online-learning/#R

But there are many others that a search would reveal.

Hadley Wickham has written a couple of books worth checking. I think
that the O'Reilly series might have one or more. It is of course
difficult to judge what "a good book for a newbie" would be in your
mind, but it is hard for me to believe that there aren't at least
several out there.

-- 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 Mon, Apr 17, 2017 at 1:06 AM, Ramnik Bansal <ramnik.bansal at gmail.com> wrote:
> Thanks Bert for the reply. It cleared my confusion .
>
> Also am new to the mailing list. Can you please guide me to the mailing list
> norms. For e.g. when I get a reply to my query which imparts me a better
> understanding on the topic, is it a norm to thank the individuals who
> responded, thru a personal mail ? Or it is kind of taken for granted that
> the question has been replied to and an individual thanks-reply to reply is
> not even expected as it will increase the number of mails.
>
> Also what seems to be missing is a good book on R which talks about all
> these nuances even for a newbie who wants to master R. Or maybe am unaware
> of one such book.
>
> -Best
> Ramnik
>
>
> On Mon, Apr 17, 2017 at 10:20 AM, Bert Gunter <bgunter.4567 at 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 <dwinsemius at comcast.net>
>> wrote:
>> >
>> >> On Apr 16, 2017, at 7:26 PM, Ramnik Bansal <ramnik.bansal at 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 at 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 at 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.
>
>



More information about the R-help mailing list