[R] how do I transform this to a for loop

Karl Brand k.brand at erasmusmc.nl
Mon Sep 6 15:44:59 CEST 2010


Hi Paul, Ivan,

Hartstikke bedankt and thanks alot for sharing these thoughts. I can see 
'listing up' multiple symmetrical data sets makes a lot of sense. As 
does using lapply() on them which i understand to be more 
efficient/faster than for().

Goodo- with your concensus (and helpful examples) i can tell myself 
investing the extra time to use lapply on lists /will/ pay off in the 
long run vs. copying and pasting (nearly) the same line of code 10 times 
for every data manipulation...

thanks again,

Karl



On 9/6/2010 12:09 PM, Paul Hiemstra wrote:
> Hi Karl,
>
> The "why do it like this" is probably direct towards creating 9 new
> objects for the arima results (Is this right Bill?). A better option
> would be to create a list with nine entries. This is much easier for any
> subsequent analyses. An example that uses lapply (an efficient syntax
> for loops):
>
> sseq <- c(1, seq(5, 40, by = 5))
> result_list = lapply(sseq, function(num) {
> arima(data.ts[num:(num+200)], order=c(1,1,1))
> })
>
> cheers,
> Paul
>
> On 09/06/2010 10:46 AM, Karl Brand wrote:
>> Hi Bill,
>>
>> I didn't make the original post, but its pretty similar to some thing
>> i would have queried the list about. But, as an R dilatante i find
>> more curious your question-
>>
>> "...but why would you want to do so?"
>>
>> Is this because you'd typically use the given nine lines of explicit
>> code to carve up a single dataset into nine symmetrical variants ? Or
>> that some contextual information may affect how you would write the
>> for() loop?
>>
>> As i lack the experience to know any better, i perceive your for()
>> loop as de rigour in efficient use of R, and the preferance of all
>> experienced R user's. But not having any formal education in R or role
>> models as such, its only an assumption (compeletely ignoring for the
>> moment processing efficiency/speed, rounding error and such).
>>
>> But which i now question! Explicit, simple crude looking code; or,
>> something which demands a little more proficiency with the language?
>>
>> cheers,
>>
>> Karl
>>
>>
>>
>> On 9/6/2010 6:16 AM, Bill.Venables at csiro.au wrote:
>>>
>>> sseq<- c(1, seq(5, 40, by = 5))
>>> for(i in 1:length(sseq))
>>> assign(paste("arima", i, sep=""),
>>> arima(data.ts[sseq[i]:(sseq[i]+200)], order=c(1,1,1)))
>>>
>>> ...but why would you want to do so?
>>>
>>>
>>> -----Original Message-----
>>> From: r-help-bounces at r-project.org
>>> [mailto:r-help-bounces at r-project.org] On Behalf Of lord12
>>> Sent: Monday, 6 September 2010 10:57 AM
>>> To: r-help at r-project.org
>>> Subject: [R] how do I transform this to a for loop
>>>
>>>
>>> arima1<- arima(data.ts[1:201], order = c(1,1,1))
>>> arima2<- arima(data.ts[5:205], order = c(1,1,1))
>>> arima3<- arima(data.ts[10:210], order = c(1,1,1))
>>> arima4<- arima(data.ts[15:215], order = c(1,1,1))
>>> arima5<- arima(data.ts[20:220], order = c(1,1,1))
>>> arima6<- arima(data.ts[25:225], order = c(1,1,1))
>>> arima7<- arima(data.ts[30:230], order = c(1,1,1))
>>> arima8<- arima(data.ts[35:235], order = c(1,1,1))
>>> arima9<- arima(data.ts[40:240], order = c(1,1,1))
>>>
>>
>
>

-- 
Karl Brand <k.brand at erasmusmc.nl>
Department of Genetics
Erasmus MC
Dr Molewaterplein 50
3015 GE Rotterdam
P +31 (0)10 704 3409 | F +31 (0)10 704 4743 | M +31 (0)642 777 268



More information about the R-help mailing list