I believe the following does what is wanted:

desired <- large
desired[large] <- small


Patrick Burns
patr...@burns-stat.com
+44 (0)20 8525 0696
http://www.burns-stat.com
(home of S Poetry and "A Guide for the Unwilling S User")

Milton Huang wrote:
Dear list members:

I am looking for an elegant (or efficient) way to accomplish the following:

take a large boolean vector and fill the TRUE values with the values from a smaller boolean vector that has a length that is the number of TRUE values of the large vector.

Example:

large<- c(FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE)

small<- c(TRUE, FALSE, TRUE)

desired output = c(FALSE, FALSE, FALSE, *TRUE*, FALSE, FALSE, *FALSE*, FALSE, FALSE, FALSE, *TRUE*, FALSE)

(without the asterisks! )

my first thought as someone new to R was ifelse(large,small, large)

but that returns: c(FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE) because small is cycled to match the size of large instead of the size of the TRUE subset of large.

I am guessing that there is probably a way to do this without writing a loop, but I just don't know the syntax.

-mph

______________________________________________
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.




______________________________________________
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.

Reply via email to