# [R] to modify a vector

Henrik Bengtsson hb at maths.lth.se
Mon Feb 10 02:57:03 CET 2003

```Hi, if I understand you correctly, you would like to change the value of
all elements with current value of 3 to 9. This is how you do it:

a1 <- c(1,2,3,4,3,5)

idx <- (a1 == 3)
a1[idx] <- 9

or in one line

a1[a1 == 3] <- 9

Look at 'idx' above. It is a logical vector of the same length as 'a1',
i.e.

idx:   FALSE FALSE  TRUE FALSE  TRUE FALSE

When you then do 'a1[idx]' you select only those elements for which idx
is TRUE, here it is the third and the fifth. 'a1[idx] <- 9' selects
those elements and then assign the value 9 to them. Details: You could
also have done

idx <- which(a1 == 3)

where 'idx' then becomes equal to c(3,5), giving 'a1[c(3,5)] <- 9',
which gives identical results (of course).

Hope this helps

Henrik Bengtsson

> -----Original Message-----
> [mailto:r-help-admin at stat.math.ethz.ch] On Behalf Of Mitsuo Igarashi
> Sent: den 8 februari 2003 17:42
> To: r-help at stat.math.ethz.ch
> Subject: [R] to modify a vector
>
>
> Hi All.
>
> I am quite a newbie to R.
> This is a basic question.
>
> I like to modify elements of a vector.
> For Example:
> a1 <- c(1,2,3,4,3,5)
>
> TThe following program sentence does not work but the intention is;
>
>   if (a1==3) a1*3 .
>
> 3 in the vector should be changed to 9, and
> the resulted vector is (1,2,9,4,9,5).
>
> How can I get the result?
>
> Thanks in advance for help.
> -------========--------
> mitsu5
> mitsu5 at ruby.famille.ne.jp
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> http://www.stat.math.ethz.ch/mailman/listinfo/> r-help
>
>

```