[R] logical condition in vector operation

Petr Pikal petr.pikal at precheza.cz
Thu Feb 9 11:27:20 CET 2006


Hi

try
ifelse()

but I you probably shall put your problem clearer.

HTH
Petr


On 8 Feb 2006 at 18:12, Federico Calboli wrote:

From:           	Federico Calboli <f.calboli at imperial.ac.uk>
To:             	r-help <r-help at stat.math.ethz.ch>
Organization:   	Imperial College London
Date sent:      	Wed, 08 Feb 2006 18:12:37 +0000
Subject:        	[R] logical condition in vector operation
Send reply to:  	f.calboli at imperial.ac.uk
	<mailto:r-help-request at stat.math.ethz.ch?subject=unsubscribe>
	<mailto:r-help-request at stat.math.ethz.ch?subject=subscribe>

> 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 at 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

Petr Pikal
petr.pikal at precheza.cz




More information about the R-help mailing list