[R] filling values in a vector using smaller vector

Wacek Kusnierczyk Waclaw.Marcin.Kusnierczyk at idi.ntnu.no
Wed Dec 24 10:28:37 CET 2008


Wacek Kusnierczyk wrote:
> 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)
>>
>>   
>>     
>
> large[which(large)] = small
> # large[which(large)] = paste("*", small, "*", sep="") to see it's as
> you specify
> ?which
>   

oops, i read your mail too quickly, assumed you wanted to make an
in-place replacement.  the functional way would be:

replace(large, which(large), small)

vQ



More information about the R-help mailing list