# [R] Creating a new vector

Alain Guillet guillet at stat.ucl.ac.be
Mon Nov 20 15:51:58 CET 2006

```y <- rnorm(1000,0,1)
x <- ifelse(y<0,y,NA)

Alain

Duncan Murdoch a écrit :
> 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
> 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
>
> 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
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> and provide commented, minimal, self-contained, reproducible code.
>
>

--
Alain Guillet
Statistician and Computer Scientist

Institut de statistique - Université catholique de Louvain
Bureau d.126
Voie du Roman Pays, 20
B-1348 Louvain-la-Neuve
Belgium

tel: +32 10 47 30 50

```