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.venab...@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-boun...@r-project.org
[mailto:r-help-boun...@r-project.org] On Behalf Of lord12
Sent: Monday, 6 September 2010 10:57 AM
To: r-help@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.br...@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

______________________________________________
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