# [R] R loop

Steven McKinney smckinney at bccrc.ca
Fri Jun 6 06:15:59 CEST 2008

```But note that you could do this in a vectorized
fashion and not use a loop at all:

> a\$wk <- (as.numeric((a\$date - set)) %/% 7) + 1
> a
x       y       date wk
1  2660156 6476767 2008-01-01  1
2  2660156 6476767 2008-01-01  1
3  2663703 6475013 2008-01-01  1
4  2663703 6475013 2008-01-01  1
5  2658165 6475487 2008-01-14  2
6  2658165 6475487 2008-01-14  2
7  2659303 6479659 2008-01-14  2
8  2659303 6479659 2008-01-14  2
9  2661531 6477004 2008-01-28  4
10 2660914 6476388 2008-01-28  4
>

-----Original Message-----
From: r-help-bounces at r-project.org on behalf of Steven McKinney
Sent: Thu 6/5/2008 9:01 PM
To: Andrew McFadden; r-help at r-project.org
Subject: Re: [R] R loop

The bolding is lost in plain-text email,
but some things to note:
:: for(i in a\$date){ - this will make i take on date values,
you probably meant i to index the rows of a[]
:: you missed indexing in your replacements in  the
then and else clauses
:: you probably want some equalities in your test conditions,
not all '<' '>' inequalities
:: need an extra condition for the 2 weeks test clause

for(i in seq(nrow(a))){
if (a\$date[i]>=set & a\$date[i]<set +7  ){a\$wk[i]<-1}else
if (a\$date[i]>=set +7 & a\$date[i]<set +14 ){a\$wk[i]<-2}else {a\$wk[i]<-3}
}

> a
x       y       date wk
1  2660156 6476767 2008-01-01  1
2  2660156 6476767 2008-01-01  1
3  2663703 6475013 2008-01-01  1
4  2663703 6475013 2008-01-01  1
5  2658165 6475487 2008-01-14  2
6  2658165 6475487 2008-01-14  2
7  2659303 6479659 2008-01-14  2
8  2659303 6479659 2008-01-14  2
9  2661531 6477004 2008-01-28  3
10 2660914 6476388 2008-01-28  3

-----Original Message-----
From: r-help-bounces at r-project.org on behalf of Andrew McFadden
Sent: Thu 6/5/2008 8:46 PM
To: r-help at r-project.org
Subject: [R] R loop

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

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