[R] For Loop

Jeff Newmiller jdnewm|| @end|ng |rom dcn@d@v|@@c@@u@
Sun Sep 23 22:03:42 CEST 2018

On Sun, 23 Sep 2018, Duncan Murdoch wrote:

> On 23/09/2018 3:31 PM, Jeff Newmiller wrote:
> [lots of good stuff deleted]
>> Vectorize is
>> syntactic sugar with a performance penalty.
> [More deletions.]
> I would say Vectorize isn't just "syntactic sugar".  When I use that term, I 
> mean something that looks nice but is functionally equivalent.
> However, Vectorize() really does something useful:  some functions (e.g. 
> outer()) take other functions as arguments, but they assume the argument is a 
> vectorized function.  If it is not, they fail, or generate garbage results. 
> Vectorize() is designed to modify the interface to a function so it acts as 
> if it is vectorized.
> The "performance penalty" part of your statement is true.  It will generally 
> save some computing cycles to write a new function using a for loop instead 
> of using Vectorize().  But that may waste some programmer time.
> Duncan Murdoch
> (writing as one of the authors of Vectorize())
> P.S. I'd give an example of syntactic sugar, but I don't want to bruise some 
> other author's feelings :-).

Perhaps my writing needs some syntactic sugar: inefficient looping 
algorithms can make sense when the calculations performed in each 
iteration are long and/or involve large amounts of data. As I mentioned 
earlier in this thread I use for loops fairly often, and I use other 
inefficient syntactic sugar as well but only to organize large 
blocks of already-vectorized (lowercase) calculation units.

In addition to the potential for inefficient use of programmer time, 
vectorizing code increases the maximum amount of memory used during 
execution of your program. A for loop is one simple way to allow memory 
re-use so really large problems can be solved with limited resources, and 
some syntactic sugar such as Vectorize can make it easier to keep track of 
those for loops.

Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil using dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                       Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k

More information about the R-help mailing list