[R] R loop

Moshe Olshansky m_olshansky at yahoo.com
Fri Jun 6 07:03:15 CEST 2008


Hi Andy,

I see two problems:

First of all, it must be a$wk[i] <- 1 and not a$wk <- 1, since this way it makes all 10 entries of a$wk to be 1. But R won't complain about this!

What R should complain about is your loop. If you write for (i in a$date) it means that i loops between all the VALUES in a$date, not their indexes (i.e. i will be "2008-01-01" 4 times, "2008-01-14" 4 times, etc). So replace your loop by for (i in 1:length(a$date)) or alternatively your condition should be if (i > set) and not if (a$date[i] > set) since a$date[as.Date("2008-01-01")] doesn't make much sense. But if you do this you will have problem changing the appropriate value of a$wk.



--- On Fri, 6/6/08, Andrew McFadden <Andrew.McFadden at maf.govt.nz> wrote:

> From: Andrew McFadden <Andrew.McFadden at maf.govt.nz>
> Subject: [R] R loop
> To: r-help at r-project.org
> Received: Friday, 6 June, 2008, 1:46 PM
> I all
> 
> I am just trying to get the idea of a loop if statement for
> another
> purpose. I was going to label a new variable based on date
> ie first week
> 1, second week 2 etc. My code in bold is wrong but seems
> logical to me,
> could someone help.
> 
> x <-
> rep(c(2660156,2663703,2658165,2659303,2661531,2660914),c(2,2,2,2,1,1))
> y <-
> rep(c(6476767,6475013,6475487,6479659,6477004,6476388),c(2,2,2,2,1,1))
> date <-
> rep(as.Date(c("2008-01-01","2008-01-14","2008-01-28"),
> format 
>  = "%Y-%m-%d"),c(4,4,2))
> a<-data.frame(x,y,date)
> a$wk<-rep(c(0),nrow(a))
> a
> set<-as.Date(c("2008-01-01"), format  =
> "%Y-%m-%d")
> set
> 
> for(i in a$date){
> if (a$date[i]>set & a$date[i]<set +7 
> ){a$wk<-1}else
> if (a$date[i]>set +7){a$wk<-2}else {a$wk<-3}
> }
> a
> 
> Kind regards
> 
> andy
> 
> Andrew McFadden MVS BVSc
> Incursion Investigator
> Investigation & Diagnostic Centres - Wallaceville
> Biosecurity New 
> Zealand Ministry of Agriculture and Forestry
> 
> Phone 04 894 5600 Fax 04 894 4973 Mobile 029 894 5611
> Postal address: 
> Investigation and Diagnostic Centre- Wallaceville Box 40742
> Ward St 
> Upper Hutt
> 
> 
> ########################################################################
> This email message and any attachment(s) is intended solely
> for the
> addressee(s) named above. The information it contains is
> confidential
> and may be legally privileged.  Unauthorised use of the
> message, or the
> information it contains, may be unlawful. If you have
> received this
> message by mistake please call the sender immediately on 64
> 4 8940100
> or notify us by return email and erase the original message
> and
> attachments. Thank you.
> 
> The Ministry of Agriculture and Forestry accepts no
> responsibility for
> changes made to this email or to any attachments after
> transmission from
> the office.
> ########################################################################
> 
> 	[[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.



More information about the R-help mailing list