Re: [R] Vector Assignments

2003-12-03 Thread Arend P. van der Veen
Your recommendations have worked great.  I have found both cut and
ifelse to be useful.

I have one more question. When should I use factors over a character
vector.  I know that they have different uses.  However, I am still
trying to figure out how I can best take advantage of factors. 

The following is what I am really trying to do:

colors - c(red,blue,green,black)
y.col - colors[cut(y,c(-Inf,250,500,700,Inf),right=F,lab=F)]
plot(x,y,col=y.col)

Would using factors make this any cleaner?  I think a character vector
is all I need but I thought I would ask.

Thanks for your help,
Arend van der Veen



On Tue, 2003-12-02 at 00:32, Gabor Grothendieck wrote:
 And one other thing.  Are you sure you want character variables
 as the result of all this?  A column whose entries are each one
 of four colors seems like a good job for a factor:
 
 colours - c(red, blue, green,black)
 cut(x, c(-Inf,250,500,700,Inf),right=F,lab=colours)
 
 
 
 ---
 Date: Mon, 1 Dec 2003 23:47:39 -0500 (EST) 
 From: Gabor Grothendieck [EMAIL PROTECTED]
 To: [EMAIL PROTECTED], [EMAIL PROTECTED] 
 Cc: [EMAIL PROTECTED] 
 Subject: Re: [R] Vector Assignments 
 
  
 
 
 
 Just some small refinements/corrections:
 
 colours - c(red, blue, green,back)
 colours[cut(x, c(-Inf,250,500,700,Inf),right=F,lab=F)]
 
 ---
 Date: Tue, 02 Dec 2003 14:38:55 +1300 
 From: Hadley Wickham [EMAIL PROTECTED]
 To: Arend P. van der Veen [EMAIL PROTECTED] 
 Cc: R HELP [EMAIL PROTECTED] 
 Subject: Re: [R] Vector Assignments 
 
 
 
 One way would be to create a vector of colours and then cut() to index 
 the vector:
 
 colours - c(red, blue, green,back)
 colours[cut(x, c(min(x),250,500,700,max(x)),lab=F)]
 
 Hadley
 
 
 Arend P. van der Veen wrote:
 
 Hi,
 
 I have simple R question. 
 
 I have a vector x that contains real numbers. I would like to create
 another vector col that is the same length of x such that:
 
 if x[i]  250 then col[i] = red
 else if x[i]  500 then col[i] = blue
 else if x[i]  750 then col[i] = green
 else col[i] = black for all i
 
 I am convinced that there is probably a very efficient way to do this in
 R but I am not able to figure it out. Any help would be greatly
 appreciated.
 
 Thanks in advance,
 Arend van der Veen
 
 
 
 ___
 No banners. No pop-ups. No kidding.
 Introducing My Way - http://www.myway.com


__
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help


Re: [R] Vector Assignments

2003-12-01 Thread Hadley Wickham
One way would be to create a vector of colours and then cut() to index 
the vector:

colours - c(red, blue, green,back)
colours[cut(x, c(min(x),250,500,700,max(x)),lab=F)]
Hadley

Arend P. van der Veen wrote:

Hi,

I have simple R question.  

I have a vector x that contains real numbers.  I would like to create
another vector col that is the same length of x such that:
if x[i]  250 then col[i] = red
else if x[i]  500 then col[i] = blue
else if x[i]  750 then col[i] = green
else col[i] = black for all i
I am convinced that there is probably a very efficient way to do this in
R but I am not able to figure it out.  Any help would be greatly
appreciated.
Thanks in advance,
Arend van der Veen
__
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help


Re: [R] Vector Assignments

2003-12-01 Thread Thomas W Blackwell
Arend  -

Here is a sequence of commands which will do it.
These first build a vector of (4+1) cutpoints,
then  cut()  returns a factor whose labels are
the colors and codes are determined by x.  Last,
as.character()  turns the factor into the character
vector which you ask for.  Or, perhaps the factor
data structure is more useful directly.  (Factors
are sort of an acquired taste.)

Note that in the call to cut, I am passing many
arguments into the function by their position in
the call.  You will need to look at  help(cut)
to figure out which argument is which.  Note also
that by monkeying with the two logical arguments,
(include.lowest and right), I didn't need to
fudge any of the cutpoints.

tmp - range(x)
tmp - c(tmp[1], 250, 500, 750, tmp[2])
fac - cut(x, tmp, c(red,blue,green,black), TRUE, FALSE)
col - as.character(fac)

HTH  -  tom blackwell  -  u michigan medical school  -  ann arbor  -

On Mon, 1 Dec 2003, Arend P. van der Veen wrote:

 Hi,

 I have simple R question.

 I have a vector x that contains real numbers.  I would like to create
 another vector col that is the same length of x such that:

 if x[i]  250 then col[i] = red
 else if x[i]  500 then col[i] = blue
 else if x[i]  750 then col[i] = green
 else col[i] = black for all i

 I am convinced that there is probably a very efficient way to do this in
 R but I am not able to figure it out.  Any help would be greatly
 appreciated.

 Thanks in advance,
 Arend van der Veen

 __
 [EMAIL PROTECTED] mailing list
 https://www.stat.math.ethz.ch/mailman/listinfo/r-help


__
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help


Re: [R] Vector Assignments

2003-12-01 Thread Gabor Grothendieck


Just some small refinements/corrections:

   colours - c(red, blue, green,back)
   colours[cut(x, c(-Inf,250,500,700,Inf),right=F,lab=F)]

---
Date: Tue, 02 Dec 2003 14:38:55 +1300 
From: Hadley Wickham [EMAIL PROTECTED]
To: Arend P. van der Veen [EMAIL PROTECTED] 
Cc: R HELP [EMAIL PROTECTED] 
Subject: Re: [R] Vector Assignments 

 
 
One way would be to create a vector of colours and then cut() to index 
the vector:

colours - c(red, blue, green,back)
colours[cut(x, c(min(x),250,500,700,max(x)),lab=F)]

Hadley


Arend P. van der Veen wrote:

Hi,

I have simple R question. 

I have a vector x that contains real numbers. I would like to create
another vector col that is the same length of x such that:

if x[i]  250 then col[i] = red
else if x[i]  500 then col[i] = blue
else if x[i]  750 then col[i] = green
else col[i] = black for all i

I am convinced that there is probably a very efficient way to do this in
R but I am not able to figure it out. Any help would be greatly
appreciated.

Thanks in advance,
Arend van der Veen


__
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help


Re: [R] Vector Assignments

2003-12-01 Thread Gabor Grothendieck


And one other thing.  Are you sure you want character variables
as the result of all this?  A column whose entries are each one
of four colors seems like a good job for a factor:

colours - c(red, blue, green,black)
cut(x, c(-Inf,250,500,700,Inf),right=F,lab=colours)



---
Date: Mon, 1 Dec 2003 23:47:39 -0500 (EST) 
From: Gabor Grothendieck [EMAIL PROTECTED]
To: [EMAIL PROTECTED], [EMAIL PROTECTED] 
Cc: [EMAIL PROTECTED] 
Subject: Re: [R] Vector Assignments 

 
 


Just some small refinements/corrections:

colours - c(red, blue, green,back)
colours[cut(x, c(-Inf,250,500,700,Inf),right=F,lab=F)]

---
Date: Tue, 02 Dec 2003 14:38:55 +1300 
From: Hadley Wickham [EMAIL PROTECTED]
To: Arend P. van der Veen [EMAIL PROTECTED] 
Cc: R HELP [EMAIL PROTECTED] 
Subject: Re: [R] Vector Assignments 



One way would be to create a vector of colours and then cut() to index 
the vector:

colours - c(red, blue, green,back)
colours[cut(x, c(min(x),250,500,700,max(x)),lab=F)]

Hadley


Arend P. van der Veen wrote:

Hi,

I have simple R question. 

I have a vector x that contains real numbers. I would like to create
another vector col that is the same length of x such that:

if x[i]  250 then col[i] = red
else if x[i]  500 then col[i] = blue
else if x[i]  750 then col[i] = green
else col[i] = black for all i

I am convinced that there is probably a very efficient way to do this in
R but I am not able to figure it out. Any help would be greatly
appreciated.

Thanks in advance,
Arend van der Veen


__
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help