[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