[R] Managing output
Rolf Turner
r.turner at auckland.ac.nz
Thu Aug 27 00:15:10 CEST 2009
On 27/08/2009, at 10:06 AM, Noah Silverman wrote:
> Phil,
>
> Pre-allocation makes sense. However, I don't know the size of my
> resulting vector when starting. In my loop, I only pull off results
> that meet a certain threshold.
>
> -N
>
I already basically told you how to handle this:
x <- list()
i <- 0
for(item in list) {
<calculate>
if(threshold met) {
i <- i+1
x[[i]] <- <whatever>
}
}
x <- unlist(x)
cheers,
Rolf Turner
> On 8/26/09 2:07 PM, Phil Spector wrote:
>> Noah -
>> I would strongly advise you to preallocate the result vector
>> using numeric() or rep(), and then enter the values based on
>> subscripts. Allowing objects to grow inside of loops is one of
>> the biggest mistakes an R programmer can make.
>>
>> - Phil Spector
>> Statistical Computing Facility
>> Department of Statistics
>> UC Berkeley
>> spector at stat.berkeley.edu
>>
>>
>> On Wed, 26 Aug 2009, Noah Silverman wrote:
>>
>>> The actually process is REALLY complicate, I just gave a simple
>>> example
>>> for the list.
>>>
>>> I have a lot of steps to process the data before I get a final
>>> "score". (nested loops, conditional statements, etc.)
>>>
>>> Right now, I'm just printing the scores to the screen. I'd like to
>>> accumulate them in some kind of data structure so I can either write
>>> them to disk or graph them.
>>>
>>> -N
>>>
>>> On 8/26/09 12:27 PM, Erik Iverson wrote:
>>>> How about ?append, but R is vectorized, so why not just
>>>>
>>>> result_list<- 2*item^2 , or for more complicated tasks, the
>>>> apply/sapply/lapply/mapply family of functions?
>>>>
>>>> In general, the "for" loop construct can be avoided so you don't
>>>> have to think about messy indexing. What exactly are you trying
>>>> to do?
>>>>
>>>> -----Original Message-----
>>>> From: r-help-bounces at r-project.org
>>>> [mailto:r-help-bounces at r-project.org] On Behalf Of Noah Silverman
>>>> Sent: Wednesday, August 26, 2009 2:20 PM
>>>> To: r help
>>>> Subject: [R] Managing output
>>>>
>>>> Hi,
>>>>
>>>>
>>>> Is there a way to build up a vector, item by item. In perl, we can
>>>> "push" an item onto an array. How can we can do this in R?
>>>> I have a loop that generates values as it goes. I want to end up
>>>> with a
>>>> vector of all the loop results.
>>>>
>>>> In perl it woud be:
>>>>
>>>> for(item in list){
>>>> result<- 2*item^2 (Or whatever formula, this is just a pseudo
>>>> example)
>>>> Push(@result_list, result) (This is the step I can't do
>>>> in R)
>>>> }
>>>>
>>>>
>>>> Thanks!
>>>>
>>>> ______________________________________________
>>>> 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.
>>>>
>>>
>>> [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> 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.
>>>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}
More information about the R-help
mailing list