[R] Return value from function with For loop
Boris Steipe
boris.steipe at utoronto.ca
Mon Apr 17 16:36:28 CEST 2017
Ramnik,
a final mail is actually really important: this is to document in the archives, for the benefit of those who found the thread at a later time, that the responses indeed solved the problem.
Other than that, the single most important advice is to
- provide a minimal working example of the problem;
- state clearly what you expect;
- state explicitly what happened instead.
Apparently you're doing fine in that regard.
B.
> On Apr 17, 2017, at 10:25 AM, Bert Gunter <bgunter.4567 at gmail.com> wrote:
>
> (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.
>>
>>
>
> ______________________________________________
> 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