Re: [R] replace numbers in a column conditional on their value

2008-01-17 Thread Jabez Wilson
Splendid, thanks for your quick response.

[EMAIL PROTECTED] wrote:   I have a data frame column in which I would like to 
replace some 
 of the numbers dependent on their value.
 
 data frame = zz
 
 AveExpr t P.Value FC
 7.481964 7.323950 1.778503e-04 2.218760
 7.585783 12.233056 6.679776e-06 2.155867
 6.953215 6.996525 2.353705e-04 1.685733
 7.647513 8.099859 9.512639e-05 1.674742
 7.285446 7.558675 1.463732e-04 1.584071
 6.405605 3.344031 1.276812e-02 1.541569
 
 I would like to replace the values in column 'FC' which are 2 
 with their squared value.
 If I do this, however, I get a warning but it does the sum correctly.
 Warning message:
 number of items to replace is not a multiple of replacement length 
 in: zz[, 4][zz[, 4]  2] - zz[, 4]^2 

Try
zz$FC[zz$FC  2] - (zz$FC[zz$FC  2])^2

Regards,
Richie.

Mathematical Sciences Unit
HSL



ATTENTION:

This message contains privileged and confidential inform...{{dropped:27}}

__
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.


[R] replace numbers in a column conditional on their value

2008-01-16 Thread Jabez Wilson
Dear R help,
   
  I have a data frame column in which I would like to replace some of the 
numbers dependent on their value.
   
  data frame = zz
   
  AveExpr t  P.Value   FC
7.481964  7.323950 1.778503e-04 2.218760
7.585783 12.233056 6.679776e-06 2.155867
6.953215  6.996525 2.353705e-04 1.685733
7.647513  8.099859 9.512639e-05 1.674742
7.285446  7.558675 1.463732e-04 1.584071
6.405605  3.344031 1.276812e-02 1.541569

  I would like to replace the values in column 'FC' which are 2 with their 
squared value.
  If I do this, however, I get a warning but it does the sum correctly.
  Warning message:
number of items to replace is not a multiple of replacement length in: zz[, 
4][zz[, 4]  2] - zz[, 4]^2 
   
  Is there a way to do this without the warning?
   

   
-

[[alternative HTML version deleted]]

__
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.


Re: [R] replace numbers in a column conditional on their value

2008-01-16 Thread Erik Iverson
Try something like,

##Untested
zz$FC - ifelse(zz$FC  2, zz$FC^2, zz$FC)

and see
?ifelse

-Erik Iverson

Jabez Wilson wrote:
 Dear R help,

   I have a data frame column in which I would like to replace some of the 
 numbers dependent on their value.

   data frame = zz

   AveExpr t  P.Value   FC
 7.481964  7.323950 1.778503e-04 2.218760
 7.585783 12.233056 6.679776e-06 2.155867
 6.953215  6.996525 2.353705e-04 1.685733
 7.647513  8.099859 9.512639e-05 1.674742
 7.285446  7.558675 1.463732e-04 1.584071
 6.405605  3.344031 1.276812e-02 1.541569
 
   I would like to replace the values in column 'FC' which are 2 with their 
 squared value.
   If I do this, however, I get a warning but it does the sum correctly.
   Warning message:
 number of items to replace is not a multiple of replacement length in: zz[, 
 4][zz[, 4]  2] - zz[, 4]^2 

   Is there a way to do this without the warning?

 

 -
 
   [[alternative HTML version deleted]]
 
 __
 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.

__
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.


Re: [R] replace numbers in a column conditional on their value

2008-01-16 Thread Richard . Cotton
   I have a data frame column in which I would like to replace some 
 of the numbers dependent on their value.
 
   data frame = zz
 
   AveExpr t  P.Value   FC
 7.481964  7.323950 1.778503e-04 2.218760
 7.585783 12.233056 6.679776e-06 2.155867
 6.953215  6.996525 2.353705e-04 1.685733
 7.647513  8.099859 9.512639e-05 1.674742
 7.285446  7.558675 1.463732e-04 1.584071
 6.405605  3.344031 1.276812e-02 1.541569
 
   I would like to replace the values in column 'FC' which are 2 
 with their squared value.
   If I do this, however, I get a warning but it does the sum correctly.
   Warning message:
 number of items to replace is not a multiple of replacement length 
 in: zz[, 4][zz[, 4]  2] - zz[, 4]^2 

Try
zz$FC[zz$FC  2] - (zz$FC[zz$FC  2])^2

Regards,
Richie.

Mathematical Sciences Unit
HSL



ATTENTION:

This message contains privileged and confidential inform...{{dropped:20}}

__
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.


Re: [R] replace numbers in a column conditional on their value

2008-01-16 Thread Rolf Turner

On 17/01/2008, at 5:45 AM, Jabez Wilson wrote:

 Dear R help,

   I have a data frame column in which I would like to replace some  
 of the numbers dependent on their value.

   data frame = zz

   AveExpr t  P.Value   FC
 7.481964  7.323950 1.778503e-04 2.218760
 7.585783 12.233056 6.679776e-06 2.155867
 6.953215  6.996525 2.353705e-04 1.685733
 7.647513  8.099859 9.512639e-05 1.674742
 7.285446  7.558675 1.463732e-04 1.584071
 6.405605  3.344031 1.276812e-02 1.541569

   I would like to replace the values in column 'FC' which are 2  
 with their squared value.
   If I do this, however, I get a warning but it does the sum  
 correctly.
   Warning message:
 number of items to replace is not a multiple of replacement length  
 in: zz[, 4][zz[, 4]  2] - zz[, 4]^2

   Is there a way to do this without the warning?

Other replies have suggested a better way to do this, but have not  
made it clear
what you are doing wrong.  The problem is that in your example you  
are effectively
trying to replace 2 values with a vector of length 6 (i.e. zz[,4] 
^2).  This will
use the first two values of the vector of length 6 to replace the two  
values that
you've chosen to replace.

This ``works'' in your example since your two values to be replaced  
come first in
the column.  But it *won't* work in general, warning message or no  
warning message.

E.g.

zz - data.frame(x=1:6,y=1:6,z=1:6,w=c(1,2,3,3,2,1))
   zz
   x y z w
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 3
5 5 5 5 2
6 6 6 6 1
R  zz[,4][zz[,4]2] - zz[,4]^2
Warning message:
In zz[, 4][zz[, 4]  2] - zz[, 4]^2 :
   number of items to replace is not a multiple of replacement length
   zz
   x y z w
1 1 1 1 1
2 2 2 2 2
3 3 3 3 1
4 4 4 4 4
5 5 5 5 2
6 6 6 6 1

The two values (3rd and 4th) to be replaced got replaced by 1 and 4  
--- the squares
of the first two entries of the column.

Moral of the story:  ***DON'T SUPPRESS WARNINGS***!!!  ***HEED  
THEM***!!!

The use of ifelse that others have suggested is the right way to go.   
But
you could do what you want using a syntax similar to that which you  
indeed used,
but corrected as follows:

   zz - data.frame(x=1:6,y=1:6,z=1:6,w=c(1,2,3,3,2,1))
   zz[,4][zz[,4]2] - zz[,4][zz[,4]2]^2 # See the difference?
   zz
   x y z w
1 1 1 1 1
2 2 2 2 2
3 3 3 3 9
4 4 4 4 9
5 5 5 5 2
6 6 6 6 1

cheers,

Rolf Turner



##
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}

__
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.