On 13-12-02 7:49 PM, Bill wrote:
It seems so inefficient. I mean the whole first vector will be
evaluated. Then if the second if is run the whole vector will be
evaluated again. Then if the next if is run the whole vector will be
evaluted again. And so on. And this could be only to test the first
element (if it is false for each if statement). Then this would be
repeated again and again. Is that really the way it works? Or am I not
thinking clearly?

Read the manual.

Duncan Murdoch



On Mon, Dec 2, 2013 at 4:48 PM, Duncan Murdoch <murdoch.dun...@gmail.com
<mailto:murdoch.dun...@gmail.com>> wrote:

    On 13-12-02 7:33 PM, Bill wrote:

        ifelse ((day_of_week == "Monday"),1,
            ifelse ((day_of_week == "Tuesday"),2,
            ifelse ((day_of_week == "Wednesday"),3,
            ifelse ((day_of_week == "Thursday"),4,
            ifelse ((day_of_week == "Friday"),5,
            ifelse ((day_of_week == "Saturday"),6,7)))))))


            In code like the above, day_of_week is a vector and so
        day_of_week ==
        "Monday" will result in a boolean vector. Suppose day_of_week is
        Monday,
        Thursday, Friday, Tuesday. So day_of_week == "Monday" will be
        True,False,False,False. I think that ifelse will test the first
        element and
        it will generate a 1. At this point it will not have run
        day_of_week ==
        "Tuesday" yet. Then it will test the second element of
        day_of_week and it
        will be false and this will cause it to evaluate day_of_week ==
        "Tuesday".
        My question would be, does the evaluation of day_of_week ==
        "Tuesday"
        result in the generation of an entire boolean vector (which
        would be in
        this case False,False,False,True) or does the ifelse "manage the
        indexing"
        so that it only tests the second element of the original vector
        (which is
        Thursday) and for that matter does it therefore not even bother
        to generate
        the first boolean vector I mentioned above
        (True,False,False,False) but
        rather just checks the first element?
            Not sure if I have explained this well but if you understand
        I would
        appreciate a reply.


    See the help for the function.  If any element of the test is true,
    the full first vector will be evaluated.  If any element is false,
    the second one will be evaluated.  There are no shortcuts of the
    kind you describe.

    Duncan Murdoch



______________________________________________
R-help@r-project.org mailing list
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