Re: [R] logical condition in vector operation

From: Federico Calboli <f.calboli_at_imperial.ac.uk>
Date: Thu 09 Feb 2006 - 21:20:46 EST

On Thu, 2006-02-09 at 09:22 +0100, Christoph Buser wrote:
> Dear Frederico
>
> From your example it is not clear to me what you like to obtain:
> Please have a look on the slightly changed example here (I
> changed two values to show a potentially undesired side effect of
> your coding.
>
>
> test <- data.frame(rbind(c(3,3,10,21,0), c(2,3,11,12,0), c(3,4,12,23,0),
> c(3,5,13,24,0)))
> names(test) <- c("x","y","p","d","su")
> test
>
> >> x y p d su
> >> 1 3 3 10 21 0
> >> 2 2 3 11 12 0
> >> 3 3 4 12 23 0
> >> 4 3 5 13 24 0
>
> j <- 3
> test[test[,1] == j, 5] <- test[test[,1] == j,2] + test[test[,2] == j,1]
>
> >> > > Warning message:
> >> longer object length
> >> is not a multiple of shorter object length in:
> >> test[test[, 1] == j, 2] + test[test[, 2] == j, 1]
>
> Your code example produces now a warning for the adapted
> data frame "test", since one tries to add two vectors of length 2
> and 3, respectively. The result is based on recycling of the
> smaller vector. In your example there was no warning since the
> second column had only one entry.
> The result with the adapted data frame is:
>
> test
> >> x y p d su
> >> 1 3 3 10 21 6
> >> 2 2 3 11 12 0
> >> 3 3 4 12 23 6
> >> 4 3 5 13 24 8
>
> Is that kind of recycling desired in your application. Otherwise
> you should be careful with the coding example above.

Recycling was and is integral part of my plan.

Cheers,

Federico

-- 
Federico C. F. Calboli
Department of Epidemiology and Public Health
Imperial College, St Mary's Campus
Norfolk Place, London W2 1PG

Tel  +44 (0)20 7594 1602     Fax (+44) 020 7594 3193

f.calboli [.a.t] imperial.ac.uk
f.calboli [.a.t] gmail.com

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Received on Thu Feb 09 21:46:58 2006

This archive was generated by hypermail 2.1.8 : Sat 11 Feb 2006 - 01:57:56 EST