HI: I need ideas on how to make this code shorter (maybe with a second loop?). The code as it is works, but in this case I only have 14 samples, but it will become insane with more, so I need a way to make it more automatic. The problem is that the output from ts1, ts2, and so on is a vector with more than one value, so I do not know how to solve this. Thanks Prenewbie The code is the following: duration<-c(750, 8940,17180, 8693,10100, 7990,24820, 6770, 7390,8450,18400,16252,6080,11030) tmax<-0 dt<-0 for (m in 1:14) { tmax[m]<-duration[m] dtmin<-969 dtmax<-9884 i<-1 dt[m]<-round(runif(1,dtmin,(tmax[m]-1)))} ts<-c(1) ts1<-ts ts2<-ts1 ts3<-ts1 ts4<-ts1 ts5<-ts1 ts6<-ts1 ts7<-ts1 ts8<-ts1 ts9<-ts1 ts10<-ts1 ts11<-ts1 ts12<-ts1 ts13<-ts1 ts14<-ts1 for (m in 1:2){ while(i+dt[m]<tmax[m]) { ts1<-append(ts,i+dt[1]) i<-i+dt[1] ifelse(dtmin<=(tmax[1]-i), dt[1]<-round(runif(1,dtmin,(tmax[1]-i))), dt[1]<-(tmax[1]-i)) ts2<-append(ts,i+dt[2]) i<-i+dt[2] ifelse(dtmin<=(tmax[2]-i), dt[2]<-round(runif(1,dtmin,(tmax[2]-i))), dt[2]<-(tmax[2]-i)) ts3<-append(ts,i+dt[3]) i<-i+dt[3] ifelse(dtmin<=(tmax[3]-i), dt[3]<-round(runif(1,dtmin,(tmax[3]-i))), dt[3]<-(tmax[3]-i)) ts4<-append(ts,i+dt[4]) i<-i+dt[4] ifelse(dtmin<=(tmax[4]-i), dt[4]<-round(runif(1,dtmin,(tmax[4]-i))), dt[4]<-(tmax[4]-i)) ts5<-append(ts,i+dt[5]) i<-i+dt[5] ifelse(dtmin<=(tmax[5]-i), dt[5]<-round(runif(1,dtmin,(tmax[5]-i))), dt[5]<-(tmax[5]-i)) ts6<-append(ts,i+dt[6]) i<-i+dt[6] ifelse(dtmin<=(tmax[6]-i), dt[6]<-round(runif(1,dtmin,(tmax[6]-i))), dt[6]<-(tmax[6]-i)) ts7<-append(ts,i+dt[7]) i<-i+dt[7] ifelse(dtmin<=(tmax[7]-i), dt[7]<-round(runif(1,dtmin,(tmax[7]-i))), dt[7]<-(tmax[7]-i)) ts8<-append(ts,i+dt[8]) i<-i+dt[8] ifelse(dtmin<=(tmax[8]-i), dt[8]<-round(runif(1,dtmin,(tmax[8]-i))), dt[8]<-(tmax[8]-i)) ts9<-append(ts,i+dt[9]) i<-i+dt[9] ifelse(dtmin<=(tmax[9]-i), dt[9]<-round(runif(1,dtmin,(tmax[9]-i))), dt[9]<-(tmax[9]-i)) ts10<-append(ts,i+dt[10]) i<-i+dt[10] ifelse(dtmin<=(tmax[10]-i), dt[10]<-round(runif(1,dtmin,(tmax[10]-i))), dt[10]<-(tmax[10]-i)) ts11<-append(ts,i+dt[11]) i<-i+dt[11] ifelse(dtmin<=(tmax[11]-i), dt[11]<-round(runif(1,dtmin,(tmax[11]-i))), dt[11]<-(tmax[11]-i)) ts12<-append(ts,i+dt[12]) i<-i+dt[12] ifelse(dtmin<=(tmax[12]-i), dt[12]<-round(runif(1,dtmin,(tmax[12]-i))), dt[12]<-(tmax[12]-i)) ts13<-append(ts,i+dt[13]) i<-i+dt[13] ifelse(dtmin<=(tmax[13]-i), dt[13]<-round(runif(1,dtmin,(tmax[13]-i))), dt[13]<-(tmax[13]-i)) ts14<-append(ts,i+dt[14]) i<-i+dt[14] ifelse(dtmin<=(tmax[14]-i), dt[14]<-round(runif(1,dtmin,(tmax[14]-i))), dt[14]<-(tmax[14]-i)) } } ts1<-append(ts,i+dt[1]) ts2<-append(ts,i+dt[2]) ts3<-append(ts,i+dt[3]) ts4<-append(ts,i+dt[4]) ts5<-append(ts,i+dt[5]) ts6<-append(ts,i+dt[6]) ts7<-append(ts,i+dt[7]) ts8<-append(ts,i+dt[8]) ts9<-append(ts,i+dt[9]) ts10<-append(ts,i+dt[10]) ts11<-append(ts,i+dt[11]) ts12<-append(ts,i+dt[12]) ts13<-append(ts,i+dt[13]) ts14<-append(ts,i+dt[14]) [[alternative HTML version deleted]]
You are right to be dissatisfied with your code. I suspect you will get more response if you say what the code is supposed to do, and give a smaller example of what the answer should be. Patrick Burns patrick at burns-stat.com +44 (0)20 8525 0696 http://www.burns-stat.com (home of S Poetry and "A Guide for the Unwilling S User") Sofia Martinez wrote:> HI: > I need ideas on how to make this code shorter (maybe with a second loop?). > The code as it is works, but in this case I only have 14 samples, but it > will become insane with more, so I need a way to make it more automatic. The > problem is that the output from ts1, ts2, and so on is a vector with more > than one value, so I do not know how to solve this. > Thanks > Prenewbie > > The code is the following: > > duration<-c(750, 8940,17180, 8693,10100, 7990,24820, 6770, > 7390,8450,18400,16252,6080,11030) > > tmax<-0 > dt<-0 > for (m in 1:14) > { > tmax[m]<-duration[m] > dtmin<-969 > dtmax<-9884 > i<-1 > dt[m]<-round(runif(1,dtmin,(tmax[m]-1)))} > ts<-c(1) > ts1<-ts > ts2<-ts1 > ts3<-ts1 > ts4<-ts1 > ts5<-ts1 > ts6<-ts1 > ts7<-ts1 > ts8<-ts1 > ts9<-ts1 > ts10<-ts1 > ts11<-ts1 > ts12<-ts1 > ts13<-ts1 > ts14<-ts1 > for (m in 1:2){ > while(i+dt[m]<tmax[m]) > { > ts1<-append(ts,i+dt[1]) > i<-i+dt[1] > ifelse(dtmin<=(tmax[1]-i), dt[1]<-round(runif(1,dtmin,(tmax[1]-i))), > dt[1]<-(tmax[1]-i)) > ts2<-append(ts,i+dt[2]) > i<-i+dt[2] > ifelse(dtmin<=(tmax[2]-i), dt[2]<-round(runif(1,dtmin,(tmax[2]-i))), > dt[2]<-(tmax[2]-i)) > ts3<-append(ts,i+dt[3]) > i<-i+dt[3] > ifelse(dtmin<=(tmax[3]-i), dt[3]<-round(runif(1,dtmin,(tmax[3]-i))), > dt[3]<-(tmax[3]-i)) > ts4<-append(ts,i+dt[4]) > i<-i+dt[4] > ifelse(dtmin<=(tmax[4]-i), dt[4]<-round(runif(1,dtmin,(tmax[4]-i))), > dt[4]<-(tmax[4]-i)) > ts5<-append(ts,i+dt[5]) > i<-i+dt[5] > ifelse(dtmin<=(tmax[5]-i), dt[5]<-round(runif(1,dtmin,(tmax[5]-i))), > dt[5]<-(tmax[5]-i)) > ts6<-append(ts,i+dt[6]) > i<-i+dt[6] > ifelse(dtmin<=(tmax[6]-i), dt[6]<-round(runif(1,dtmin,(tmax[6]-i))), > dt[6]<-(tmax[6]-i)) > ts7<-append(ts,i+dt[7]) > i<-i+dt[7] > ifelse(dtmin<=(tmax[7]-i), dt[7]<-round(runif(1,dtmin,(tmax[7]-i))), > dt[7]<-(tmax[7]-i)) > ts8<-append(ts,i+dt[8]) > i<-i+dt[8] > ifelse(dtmin<=(tmax[8]-i), dt[8]<-round(runif(1,dtmin,(tmax[8]-i))), > dt[8]<-(tmax[8]-i)) > ts9<-append(ts,i+dt[9]) > i<-i+dt[9] > ifelse(dtmin<=(tmax[9]-i), dt[9]<-round(runif(1,dtmin,(tmax[9]-i))), > dt[9]<-(tmax[9]-i)) > ts10<-append(ts,i+dt[10]) > i<-i+dt[10] > ifelse(dtmin<=(tmax[10]-i), > dt[10]<-round(runif(1,dtmin,(tmax[10]-i))), dt[10]<-(tmax[10]-i)) > ts11<-append(ts,i+dt[11]) > i<-i+dt[11] > ifelse(dtmin<=(tmax[11]-i), > dt[11]<-round(runif(1,dtmin,(tmax[11]-i))), dt[11]<-(tmax[11]-i)) > ts12<-append(ts,i+dt[12]) > i<-i+dt[12] > ifelse(dtmin<=(tmax[12]-i), > dt[12]<-round(runif(1,dtmin,(tmax[12]-i))), dt[12]<-(tmax[12]-i)) > ts13<-append(ts,i+dt[13]) > i<-i+dt[13] > ifelse(dtmin<=(tmax[13]-i), > dt[13]<-round(runif(1,dtmin,(tmax[13]-i))), dt[13]<-(tmax[13]-i)) > ts14<-append(ts,i+dt[14]) > i<-i+dt[14] > ifelse(dtmin<=(tmax[14]-i), > dt[14]<-round(runif(1,dtmin,(tmax[14]-i))), dt[14]<-(tmax[14]-i)) > } } > ts1<-append(ts,i+dt[1]) > ts2<-append(ts,i+dt[2]) > ts3<-append(ts,i+dt[3]) > ts4<-append(ts,i+dt[4]) > ts5<-append(ts,i+dt[5]) > ts6<-append(ts,i+dt[6]) > ts7<-append(ts,i+dt[7]) > ts8<-append(ts,i+dt[8]) > ts9<-append(ts,i+dt[9]) > ts10<-append(ts,i+dt[10]) > ts11<-append(ts,i+dt[11]) > ts12<-append(ts,i+dt[12]) > ts13<-append(ts,i+dt[13]) > ts14<-append(ts,i+dt[14]) > > [[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. > > >
HI the code is suppose to generate a random value selected uniformly as a time interval in seconds (that's the dT) from the range given from dtmin<-969 dtmax<-9884. Once that value is selected the program will generate the interval (ts1, ts2, and so on. for each sampling without getting out of their time limits. For example for sample 1 the duration of the event is 1750 seconds (sorry I miss a one) so if the dt selected is 1200 for example it will generate a series of 1 then 1200 2400 and so on but since the we have while(i+dt[m]<tmax[m]) it will not print 2400, because there are not values for that. but if ifelse(dtmin<=(tmax[1]-i), dt[1]<-round(runif(1,dtmin,(tmax[1]-i))), dt[1]<-(tmax[1]-i)) means that if the sample has a very short duration such as sample 1 then it will sample at 1200 seconds and then will sample from the range that is left so (1750-1200). I hope this clarifies a bit more. My problem is that since for each sample ts has several values I do not know how to store them in a way that allows me to do a loop. On Mon, Jul 28, 2008 at 5:20 AM, Sofia Martinez <sofiamartinezv@gmail.com>wrote:> HI: > I need ideas on how to make this code shorter (maybe with a second loop?). > The code as it is works, but in this case I only have 14 samples, but it > will become insane with more, so I need a way to make it more automatic. The > problem is that the output from ts1, ts2, and so on is a vector with more > than one value, so I do not know how to solve this. > Thanks > Prenewbie > > The code is the following: > > duration<-c(750, 8940,17180, 8693,10100, 7990,24820, 6770, > 7390,8450,18400,16252,6080,11030) > > tmax<-0 > dt<-0 > for (m in 1:14) > { > tmax[m]<-duration[m] > dtmin<-969 > dtmax<-9884 > i<-1 > dt[m]<-round(runif(1,dtmin,(tmax[m]-1)))} > ts<-c(1) > ts1<-ts > ts2<-ts1 > ts3<-ts1 > ts4<-ts1 > ts5<-ts1 > ts6<-ts1 > ts7<-ts1 > ts8<-ts1 > ts9<-ts1 > ts10<-ts1 > ts11<-ts1 > ts12<-ts1 > ts13<-ts1 > ts14<-ts1 > for (m in 1:2){ > while(i+dt[m]<tmax[m]) > { > ts1<-append(ts,i+dt[1]) > i<-i+dt[1] > ifelse(dtmin<=(tmax[1]-i), dt[1]<-round(runif(1,dtmin,(tmax[1]-i))), > dt[1]<-(tmax[1]-i)) > ts2<-append(ts,i+dt[2]) > i<-i+dt[2] > ifelse(dtmin<=(tmax[2]-i), dt[2]<-round(runif(1,dtmin,(tmax[2]-i))), > dt[2]<-(tmax[2]-i)) > ts3<-append(ts,i+dt[3]) > i<-i+dt[3] > ifelse(dtmin<=(tmax[3]-i), dt[3]<-round(runif(1,dtmin,(tmax[3]-i))), > dt[3]<-(tmax[3]-i)) > ts4<-append(ts,i+dt[4]) > i<-i+dt[4] > ifelse(dtmin<=(tmax[4]-i), dt[4]<-round(runif(1,dtmin,(tmax[4]-i))), > dt[4]<-(tmax[4]-i)) > ts5<-append(ts,i+dt[5]) > i<-i+dt[5] > ifelse(dtmin<=(tmax[5]-i), dt[5]<-round(runif(1,dtmin,(tmax[5]-i))), > dt[5]<-(tmax[5]-i)) > ts6<-append(ts,i+dt[6]) > i<-i+dt[6] > ifelse(dtmin<=(tmax[6]-i), dt[6]<-round(runif(1,dtmin,(tmax[6]-i))), > dt[6]<-(tmax[6]-i)) > ts7<-append(ts,i+dt[7]) > i<-i+dt[7] > ifelse(dtmin<=(tmax[7]-i), dt[7]<-round(runif(1,dtmin,(tmax[7]-i))), > dt[7]<-(tmax[7]-i)) > ts8<-append(ts,i+dt[8]) > i<-i+dt[8] > ifelse(dtmin<=(tmax[8]-i), dt[8]<-round(runif(1,dtmin,(tmax[8]-i))), > dt[8]<-(tmax[8]-i)) > ts9<-append(ts,i+dt[9]) > i<-i+dt[9] > ifelse(dtmin<=(tmax[9]-i), dt[9]<-round(runif(1,dtmin,(tmax[9]-i))), > dt[9]<-(tmax[9]-i)) > ts10<-append(ts,i+dt[10]) > i<-i+dt[10] > ifelse(dtmin<=(tmax[10]-i), > dt[10]<-round(runif(1,dtmin,(tmax[10]-i))), dt[10]<-(tmax[10]-i)) > ts11<-append(ts,i+dt[11]) > i<-i+dt[11] > ifelse(dtmin<=(tmax[11]-i), > dt[11]<-round(runif(1,dtmin,(tmax[11]-i))), dt[11]<-(tmax[11]-i)) > ts12<-append(ts,i+dt[12]) > i<-i+dt[12] > ifelse(dtmin<=(tmax[12]-i), > dt[12]<-round(runif(1,dtmin,(tmax[12]-i))), dt[12]<-(tmax[12]-i)) > ts13<-append(ts,i+dt[13]) > i<-i+dt[13] > ifelse(dtmin<=(tmax[13]-i), > dt[13]<-round(runif(1,dtmin,(tmax[13]-i))), dt[13]<-(tmax[13]-i)) > ts14<-append(ts,i+dt[14]) > i<-i+dt[14] > ifelse(dtmin<=(tmax[14]-i), > dt[14]<-round(runif(1,dtmin,(tmax[14]-i))), dt[14]<-(tmax[14]-i)) > } } > ts1<-append(ts,i+dt[1]) > ts2<-append(ts,i+dt[2]) > ts3<-append(ts,i+dt[3]) > ts4<-append(ts,i+dt[4]) > ts5<-append(ts,i+dt[5]) > ts6<-append(ts,i+dt[6]) > ts7<-append(ts,i+dt[7]) > ts8<-append(ts,i+dt[8]) > ts9<-append(ts,i+dt[9]) > ts10<-append(ts,i+dt[10]) > ts11<-append(ts,i+dt[11]) > ts12<-append(ts,i+dt[12]) > ts13<-append(ts,i+dt[13]) > ts14<-append(ts,i+dt[14]) > >[[alternative HTML version deleted]]