[R] Creating a new vector

Duncan Murdoch murdoch at stats.uwo.ca
Mon Nov 20 15:34:35 CET 2006


On 11/20/2006 9:24 AM, Amir Safari wrote:
>   
>   
>      Dear R Users,
>   
>   Suppose we want to creat a new vector ( x ) from a current vector (y)  of length 1000. The current vector y includes negative, zero and  positive values. We want our new vector x includes the negative values  in y, otherwise NA with the same length as y.

I'd do it like this:

x <- y
x[y >= 0] <- NA

>   For this, we have  x=y[y<0]  . Now x includes a subset of  y with shorter length than y. With x=match(y,x) we would have  a  vector of indices equal to the length of y. x=y[x] gives us a vector of  values with the same length as y. But when I implement such a  procedure, x dose not merely include negative values. It includes  negative, NA and also positive values.
>   What could be the reason for appearing pasitive values? And how to  correct this? And more generally how can this purpose be coded more  convenient?

I don't know exactly what went wrong with your approach, but it does 
seem rather roundabout.  I'd suggest using more informative variable 
names; it's hard to figure out what you're getting when you use x for 
three different things!  Name it according to what it contains, and then 
it will be obvious exactly where you do a computation that doesn't match 
your expectations.

Duncan Murdoch

>   Thank you so much for any reply.
>   
>   Amir Safari
> 
> ______________________________________________
> 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
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list