Try this: replace(replace(x, x == 1, sample(0:1, 1)), x == 2, 1)
On Tue, Dec 28, 2010 at 2:43 PM, M.Ribeiro <mresende...@yahoo.com.br> wrote: > > Hi, > I have a simple task, but I am looking for a clever and fast way to do it: > > I have a vector x with 0,1 or 2 and I want to create another vector y with > the same length following the rules: > If the element in x is equal to 0, the element in y is equal to 0 > If the element in x is equal to 2, the element in y is equal to 1 > If the element in x is equal to 1, the element in y is either 0 or 1 > (sample > from c(0,1)) > > thus the vector > > x > [,1] > [1,] 0 > [2,] 2 > [3,] 1 > [4,] 2 > [5,] 0 > [6,] 1 > [7,] 2 > > could produce the vector y (this is one of the possibilities since y|x=1 is > either 0 or 1 > > > y > [,1] > [1,] 0 > [2,] 1 > [3,] 1 > [4,] 1 > [5,] 0 > [6,] 0 > [7,] 1 > > > I know how to do this using for loops but I was wondering if you guys could > suggest a better way > Thanks > > -- > View this message in context: > http://r.789695.n4.nabble.com/Faster-way-to-do-it-using-apply-tp3166161p3166161.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help@r-project.org 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. > -- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O [[alternative HTML version deleted]]
______________________________________________ R-help@r-project.org 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.