Re place Values within vector using Translation vector
On 18/02/2009 4:24 PM, Christian Langkamp wrote:
Dear everyone I would like to change values in vectors doing a translation. i.e. I have a start vector giving me the levels in one vector (numbers 1 to x - rating) and then I have a second vector giving me the values to be allocated (loss probabilities), but the number of potential rating classes and loss estimates is still subject to a lot of discussion. Attached a simplified version of the problem (original has more values and needs to stay flexible, i.e. length of translation vector can change. Trans_Prob_values<-c(0.005, 0.01, 0.1) Trans_CR<-c(1,2,3) a<-c(3,2,1,1,2,3) A<-replace(a, Trans_CR, Trans_Prob_values) A This however produces [1] 0.005 0.010 0.100 1.000 2.000 3.000 as opposed to the desired result. The help however says "replace replaces the values in x with indexes given in list
Since your Trans_CR contains 1:3, this says the first 3 entries of x will be replaced, and that's what happened. What you want is simply A <- Trans_Prob_values[a] (assuming that the indices are always in 1:x, and that Trans_Prob_values will have x values in it). Duncan Murdoch by those given
in values. If necessary, the values in values are recycled. " which in my view should be exactly doing the job intended above. Constructions with nested ifelse statements and individual replacements are too cumbersome in my view. I searched for conditional replacement, vector replace, replace function and read the problems, but generally they have conditions like age>30 then x, not a direct translation of values. If anyone has an idea, please do share it. Thanks Christian