On 10/27/2009 1:14 PM, Douglas M. Hultstrand wrote:
Hello,
I am trying to create a new vector (w) that is based on comparing two
vectors (P and Z). The compaison is simple (I created a for loop that
reassigns w based on if statement), all Z values >= 24 and P values <=1,
w=88 else w=77. I am not getting the correct results for w, see
example code below. Any thoughts or suggestions on the correct method.
Use ifelse(), not if ... else. It's ideal for tests like these.
Thank you,
Doug
P <- c(0,1,2,3,4,5,0,1,5)
Z <- c(25,23,28,29,30,31,28,29,22)
w <- P
for (i in length(w)) {
That only sets i to one value, length(w). You could fix it by
for (i in seq_along(w))
but ifelse() is better:
w <- ifelse( Z >= 24 & P <= 1, 88, 77 )
Duncan Murdoch
if(Z[i]>=24 && P[i]<=1) {
w[i] = 88
} else {
w[i] = 77}
}
d.f <- data.frame(Z,P,w)
d.f
Z P w
1 25 0 0
2 23 1 1
3 28 2 2
4 29 3 3
5 30 4 4
6 31 5 5
7 28 0 0
8 29 1 1
9 22 5 77
______________________________________________
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.