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
On Saturday 08 February 2003 12:41 am, Mitsuo Igarashi wrote:> 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?if you want to store the result in a1 itself, a1[a1==3] <- a1[a1==3] * 3 Alternately, ifelse(a1 == 3, a1 * 3, a1)
On 8 Feb 2003 at 15:41, Mitsuo Igarashi wrote: You should realy read "An Introduction to R", which comes with your R installation.> 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). >a1[a1==3] <- 9 Kjetil Halvorsen> 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
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----- > From: r-help-admin at stat.math.ethz.ch > [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 > >