[R] Re place Values within vector using Translation vector

Duncan Murdoch murdoch at stats.uwo.ca
Wed Feb 18 22:30:45 CET 2009


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
>




More information about the R-help mailing list