[R] complexity of operations in R

Bert Gunter gunter.berton at gene.com
Thu Jul 19 22:08:20 CEST 2012


Jan:

Point taken.

However, if possible, as Bill Dunlap indicated, it still may make
sense to create an oversized list first and then populate what you
need of it with your loop.

Note that a lot of this can be finessed with lapplyand friends
anyway, letting R worry about the details of creating and populating
the list.

-- Bert

On Thu, Jul 19, 2012 at 12:36 PM, Jan van der Laan <rhelp at eoos.dds.nl> wrote:
> On 07/19/2012 06:11 PM, Bert Gunter wrote:
>>
>> Hadley et. al:
>>
>> Indeed. And using a loop is a poor way to do it anyway.
>>
>> v <- as.list(rep(FALSE,dotot))
>>
>> is way faster.
>>
>> -- Bert
>
>
> I agree that not using a loop is much faster, but I assume that the original
> question is about the situation where the size of the end result is not
> known. The values FALSE in the vector/list are just examples of results from
> a more complex computation. But indeed avoid loops where possible (and often
> this is possible).
>
> Jan
>
>> On Thu, Jul 19, 2012 at 8:50 AM, Hadley Wickham <hadley at rice.edu> wrote:
>>>
>>> On Thu, Jul 19, 2012 at 8:02 AM, Jan van der Laan <rhelp at eoos.dds.nl>
>>> wrote:
>>>>
>>>> Johan,
>>>>
>>>> Your 'list' and 'array doubling' code can be written much more
>>>> efficient.
>>>>
>>>> The following function is faster than your g and easier to read:
>>>>
>>>> g2 <- function(dotot) {
>>>>    v <- list()
>>>>    for (i in seq_len(dotot)) {
>>>>      v[[i]] <- FALSE
>>>>    }
>>>> }
>>>
>>> Except that you don't need to pre-allocate lists...
>>>
>>> Hadley
>>>
>>> --
>>> Assistant Professor / Dobelman Family Junior Chair
>>> Department of Statistics / Rice University
>>> http://had.co.nz/
>>>
>>> ______________________________________________
>>> R-help at 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.
>>
>>
>>
>
>



-- 

Bert Gunter
Genentech Nonclinical Biostatistics

Internal Contact Info:
Phone: 467-7374
Website:
http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm



More information about the R-help mailing list