[R] logical condition in vector operation

From: Federico Calboli <f.calboli_at_imperial.ac.uk>
Date: Thu 09 Feb 2006 - 05:12:37 EST


HI All,

I have a data frame such as:

> test

     x y p d
[1,] 1 0 10 21 0
[2,] 2 3 11 12 0
[3,] 3 4 12 23 0
[4,] 3 5 13 24 0

and I want to perfor some operations on the first two coulums, conditional on the uneqaulity values on the 3rd and 4th columns.

For instance:

j = 3
test[test[,1] == j, 5] = test[test[,1] == j,2] + test[test[,2] == j,1]

gives me the result:

test:

     x y p d
[1,] 1 0 10 21 0
[2,] 2 3 11 12 0
[3,] 3 4 12 23 6
[4,] 3 5 13 24 7

My probblem is the following: I want to perform the operation test[test[,1] == j,2] + test[test[,2] == j,1] only if the value of column p and column d are different at the positions where x or y = j. In practice, I don't want to perform the first operation because test[2,4 is 12 and test[1,3] is 12 as well.

I tried an if statement with little success:

if(test[test[,1] == j,3] != test[test[,2] == j,4]){ test[test[,1] == j, 5] = test[test[,1] == j,2] + test[test[,2] == j,1] }
Warning message:
the condition has length > 1 and only the first element will be used in: if (test[test[, 1] == j, 3] != test[test[, 2] == j, 4]) {

Could anyone lend some advice?

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 07:18:57 2006

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:42:26 EST