[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